mirror of
https://github.com/knex/knex.git
synced 2025-07-11 02:50:55 +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();
|
|
});
|
|
});
|