mirror of
https://github.com/frappe/books.git
synced 2024-12-25 20:11:15 +00:00
test: Add test for database migration
This commit is contained in:
parent
d1bbda829a
commit
86c57af94b
@ -2,7 +2,7 @@ const assert = require('assert');
|
|||||||
const frappe = require('frappejs');
|
const frappe = require('frappejs');
|
||||||
const helpers = require('./helpers');
|
const helpers = require('./helpers');
|
||||||
|
|
||||||
describe('Database', () => {
|
describe('Database CRUD', () => {
|
||||||
before(async function() {
|
before(async function() {
|
||||||
await helpers.initSqlite();
|
await helpers.initSqlite();
|
||||||
});
|
});
|
||||||
|
76
tests/test_migrate.js
Normal file
76
tests/test_migrate.js
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
const assert = require('assert');
|
||||||
|
const frappe = require('frappejs');
|
||||||
|
const server = require('frappejs/server');
|
||||||
|
const SQLite = require('frappejs/backends/sqlite');
|
||||||
|
|
||||||
|
let Person = {
|
||||||
|
name: 'Person',
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
label: 'Full Name',
|
||||||
|
fieldname: 'name',
|
||||||
|
fieldtype: 'Data'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Age',
|
||||||
|
fieldname: 'age',
|
||||||
|
fieldtype: 'Int'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Gender',
|
||||||
|
fieldname: 'gender',
|
||||||
|
fieldtype: 'Link',
|
||||||
|
target: 'Gender'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
let Gender = {
|
||||||
|
name: 'Gender',
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
label: 'Name',
|
||||||
|
fieldname: 'name',
|
||||||
|
fieldtype: 'Data'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
describe('Database Migrate', () => {
|
||||||
|
it('should create tables for model definition', async () => {
|
||||||
|
let dbPath = '_migrate_test.db';
|
||||||
|
server.init();
|
||||||
|
let models = {
|
||||||
|
models: {
|
||||||
|
Person,
|
||||||
|
Gender
|
||||||
|
}
|
||||||
|
};
|
||||||
|
frappe.models = {};
|
||||||
|
frappe.registerModels(models);
|
||||||
|
frappe.db = new SQLite({ dbPath });
|
||||||
|
await frappe.db.connect();
|
||||||
|
await frappe.db.migrate();
|
||||||
|
|
||||||
|
let tables = await frappe.db
|
||||||
|
.knex('sqlite_master')
|
||||||
|
.select('name')
|
||||||
|
.where('type', 'table')
|
||||||
|
.orderBy('name')
|
||||||
|
.pluck('name');
|
||||||
|
|
||||||
|
// check if tables were created
|
||||||
|
assert.deepEqual(['Gender', 'Person'], tables);
|
||||||
|
|
||||||
|
let fields = await frappe.db.sql('PRAGMA table_info(??)', 'Person')
|
||||||
|
// check if standard fields and model fields were created
|
||||||
|
assert.equal(fields.length, 8);
|
||||||
|
assert.equal(fields.find(d => d.name === 'age').type, 'integer');
|
||||||
|
|
||||||
|
let foreignKeys = await frappe.db.sql('PRAGMA foreign_key_list(??)', 'Person')
|
||||||
|
// check for foreign keys
|
||||||
|
assert.equal(foreignKeys.length, 1);
|
||||||
|
assert.equal(foreignKeys[0].from, 'gender');
|
||||||
|
assert.equal(foreignKeys[0].table, 'Gender');
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user