2
0
mirror of https://github.com/frappe/books.git synced 2024-12-27 04:32:41 +00:00
books/tests/test_migrate.js

77 lines
1.7 KiB
JavaScript
Raw Normal View History

2019-12-13 07:13:45 +00:00
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');
});
});