/
migrate.spec.js
59 lines (52 loc) · 1.73 KB
/
migrate.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
'use strict';
const path = require('path');
const sqlite3 = require('sqlite3');
const { expect } = require('chai');
const { execCommand } = require('cli-testlab');
const { getRootDir, setupFileHelper } = require('./cli-test-utils');
const KNEX = path.normalize(__dirname + '/../../bin/cli.js');
describe('migrate:latest', () => {
before(() => {
process.env.KNEX_PATH = '../knex.js';
});
let fileHelper;
const rootDir = getRootDir();
const dbPath = path.resolve(rootDir, 'db');
beforeEach(() => {
fileHelper = setupFileHelper();
fileHelper.registerForCleanup(dbPath);
});
afterEach(() => {
fileHelper.cleanup();
});
it('Run migrations', async () => {
fileHelper.createFile(
'migrations/000_create_rule_table.js',
`
exports.up = (knex)=> knex.schema.createTable('rules', (table)=> {
table.string('name');
});
exports.down = (knex)=> knex.schema.dropTable('rules');
`,
{ willBeCleanedUp: true, isPathAbsolute: false }
);
expect(fileHelper.fileExists(dbPath)).to.equal(false);
await execCommand(`node ${KNEX} migrate:latest \
--client=sqlite3 --connection=${dbPath} \
--migrations-directory=${rootDir}/migrations \
create_rule_table`);
expect(fileHelper.fileExists(dbPath)).to.equal(true);
const db = await new sqlite3.Database(dbPath);
const getPromise = new Promise((resolve, reject) => {
db.get('SELECT name FROM knex_migrations', {}, (err, row) => {
if (err) {
reject(err);
}
resolve(row);
});
});
const row = await getPromise;
expect(row.name).to.equal('000_create_rule_table.js');
db.close();
});
});