mirror of
https://github.com/knex/knex.git
synced 2025-07-11 11:01:54 +00:00
60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
![]() |
'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();
|
||
|
});
|
||
|
});
|