mirror of
https://github.com/frappe/books.git
synced 2024-12-25 12:10:06 +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 helpers = require('./helpers');
|
||||
|
||||
describe('Database', () => {
|
||||
describe('Database CRUD', () => {
|
||||
before(async function() {
|
||||
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