%PDF- %PDF-
| Direktori : /home/opti/workflow/node_modules/sequelize-cli/test/db/migrate/schema/ |
| Current File : /home/opti/workflow/node_modules/sequelize-cli/test/db/migrate/schema/add_timestamps.test.js |
const expect = require('expect.js');
const Support = require(__dirname + '/../../../support');
const helpers = require(__dirname + '/../../../support/helpers');
const gulp = require('gulp');
[
'db:migrate:schema:timestamps:add'
].forEach(flag => {
const prepare = function (config, callback) {
config = helpers.getTestConfig(config);
gulp
.src(Support.resolveSupportPath('tmp'))
.pipe(helpers.clearDirectory())
.pipe(helpers.runCli('init'))
.pipe(helpers.copyMigration('createPerson.js'))
.pipe(helpers.copyMigration('renamePersonToUser.js'))
.pipe(helpers.overwriteFile(JSON.stringify(config), 'config/config.json'))
.pipe(helpers.runCli('db:migrate'))
.pipe(helpers.teardown(callback));
};
describe(Support.getTestDialectTeaser(flag), () => {
beforeEach(function (done) {
prepare.call(this, null, () => {
return gulp
.src(Support.resolveSupportPath('tmp'))
.pipe(helpers.runCli(flag))
.pipe(helpers.teardown(done));
});
});
it('renames the original table', function (done) {
const self = this;
helpers.readTables(self.sequelize, tables => {
expect(tables).to.have.length(3);
expect(tables.indexOf('SequelizeMeta')).to.be.above(-1);
expect(tables.indexOf('SequelizeMetaBackup')).to.be.above(-1);
done();
});
});
it('keeps the data in the original table', function (done) {
helpers.execQuery(
this.sequelize,
this.sequelize.getQueryInterface().QueryGenerator.selectQuery('SequelizeMetaBackup'),
{ raw: true }
).then(items => {
expect(items.length).to.equal(2);
done();
});
});
it('keeps the structure of the original table', function (done) {
const self = this;
helpers.readTables(self.sequelize, () => {
return self
.sequelize
.getQueryInterface()
.describeTable('SequelizeMetaBackup')
.then(fields => {
expect(Object.keys(fields).sort()).to.eql(['name']);
done();
return null;
});
});
});
it('creates a new SequelizeMeta table with the new structure', function (done) {
this.sequelize.getQueryInterface().describeTable('SequelizeMeta').then(fields => {
expect(Object.keys(fields).sort()).to.eql(['createdAt', 'name', 'updatedAt']);
done();
});
});
it('copies the entries into the new table', function (done) {
helpers.execQuery(
this.sequelize,
this.sequelize.getQueryInterface().QueryGenerator.selectQuery('SequelizeMeta'),
{ raw: true, type: 'SELECT' }
).then(items => {
expect(items[0].name).to.eql('20111117063700-createPerson.js');
expect(items[1].name).to.eql('20111205064000-renamePersonToUser.js');
done();
});
});
it('is possible to undo one of the already executed migrations', function (done) {
const self = this;
gulp
.src(Support.resolveSupportPath('tmp'))
.pipe(helpers.runCli('db:migrate:undo'))
.pipe(helpers.teardown(() => {
helpers.execQuery(
self.sequelize,
self.sequelize.getQueryInterface().QueryGenerator.selectQuery('SequelizeMeta'),
{ raw: true, type: 'SELECT' }
).then(items => {
expect(items[0].name).to.eql('20111117063700-createPerson.js');
done();
});
}));
});
});
});