mirror of
https://github.com/frappe/books.git
synced 2024-11-10 15:50:56 +00:00
77 lines
1.7 KiB
JavaScript
77 lines
1.7 KiB
JavaScript
|
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');
|
||
|
});
|
||
|
});
|