2
0
mirror of https://github.com/frappe/books.git synced 2024-12-26 12:28:12 +00:00

test: Add test for database migration

This commit is contained in:
Faris Ansari 2019-12-13 12:43:45 +05:30
parent d1bbda829a
commit 86c57af94b
2 changed files with 77 additions and 1 deletions

View File

@ -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
View 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');
});
});