2020-12-28 16:55:08 +02:00
|
|
|
const Knex = require('../../../../lib');
|
2018-11-19 12:55:50 +01:00
|
|
|
const { expect } = require('chai');
|
2020-12-28 16:55:08 +02:00
|
|
|
const sqliteConfig = require('../../../knexfile').sqlite3;
|
2021-10-10 01:33:20 +03:00
|
|
|
const FsMigrations =
|
|
|
|
require('../../../../lib/migrations/migrate/sources/fs-migrations').default;
|
2018-11-19 12:55:50 +01:00
|
|
|
|
|
|
|
describe('Migrator', () => {
|
|
|
|
describe('does not use postProcessResponse for internal queries', (done) => {
|
|
|
|
let migrationSource;
|
|
|
|
let knex;
|
2018-12-03 23:47:09 +01:00
|
|
|
beforeEach(() => {
|
2018-11-19 12:55:50 +01:00
|
|
|
migrationSource = new FsMigrations('test/unit/migrate/migrations/');
|
|
|
|
knex = Knex({
|
|
|
|
...sqliteConfig,
|
2018-12-03 23:47:09 +01:00
|
|
|
connection: ':memory:',
|
2018-11-19 12:55:50 +01:00
|
|
|
migrationSource,
|
|
|
|
postProcessResponse: () => {
|
|
|
|
throw new Error('Response was processed');
|
|
|
|
},
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2018-12-03 23:47:09 +01:00
|
|
|
afterEach(() => {
|
2019-05-13 12:21:36 +03:00
|
|
|
return knex.destroy();
|
2018-12-03 23:47:09 +01:00
|
|
|
});
|
|
|
|
|
2018-11-19 12:55:50 +01:00
|
|
|
it('latest', (done) => {
|
|
|
|
expect(() => {
|
2019-03-13 22:47:43 +01:00
|
|
|
return knex.migrate
|
2018-11-19 12:55:50 +01:00
|
|
|
.latest({
|
|
|
|
directory: 'test/unit/migrate/migrations',
|
|
|
|
})
|
|
|
|
.then(() => {
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
}).not.to.throw();
|
|
|
|
});
|
|
|
|
});
|
2018-12-03 23:47:09 +01:00
|
|
|
|
2019-03-13 22:47:43 +01:00
|
|
|
describe('supports running migrations in transaction', (done) => {
|
|
|
|
let migrationSource;
|
|
|
|
let knex;
|
|
|
|
let wasProcessed = false;
|
|
|
|
let wasWrapped = false;
|
|
|
|
beforeEach(() => {
|
|
|
|
migrationSource = new FsMigrations('test/unit/migrate/migrations/');
|
|
|
|
knex = Knex({
|
|
|
|
...sqliteConfig,
|
|
|
|
connection: ':memory:',
|
|
|
|
migrationSource,
|
|
|
|
postProcessResponse: (response) => {
|
|
|
|
wasProcessed = true;
|
|
|
|
return response;
|
|
|
|
},
|
|
|
|
wrapIdentifier: (value, wrap) => {
|
|
|
|
wasWrapped = true;
|
|
|
|
return wrap(value);
|
|
|
|
},
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
afterEach(() => {
|
2019-05-13 12:21:36 +03:00
|
|
|
return knex.destroy();
|
2019-03-13 22:47:43 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
it('latest', (done) => {
|
|
|
|
expect(() => {
|
|
|
|
return knex.transaction((txn) => {
|
|
|
|
txn.migrate
|
|
|
|
.latest({
|
|
|
|
directory: 'test/unit/migrate/migrations',
|
|
|
|
})
|
|
|
|
.then(() => {
|
|
|
|
expect(wasProcessed).to.equal(false);
|
|
|
|
expect(wasWrapped).to.equal(false);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}).not.to.throw();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2018-12-03 23:47:09 +01:00
|
|
|
describe('uses postProcessResponse for migrations', (done) => {
|
|
|
|
let migrationSource;
|
|
|
|
let knex;
|
|
|
|
beforeEach(() => {
|
|
|
|
migrationSource = new FsMigrations(
|
|
|
|
'test/unit/migrate/processed-migrations/'
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
afterEach(() => {
|
2019-05-13 12:21:36 +03:00
|
|
|
return knex.destroy();
|
2018-12-03 23:47:09 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
it('latest', (done) => {
|
|
|
|
let wasPostProcessed = false;
|
|
|
|
knex = Knex({
|
|
|
|
...sqliteConfig,
|
|
|
|
connection: ':memory:',
|
|
|
|
migrationSource,
|
2019-03-13 22:47:43 +01:00
|
|
|
postProcessResponse: (response) => {
|
2018-12-03 23:47:09 +01:00
|
|
|
wasPostProcessed = true;
|
2019-03-13 22:47:43 +01:00
|
|
|
return response;
|
2018-12-03 23:47:09 +01:00
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
knex.migrate
|
|
|
|
.latest({
|
|
|
|
directory: 'test/unit/migrate/processed-migrations',
|
|
|
|
})
|
|
|
|
.then(() => {
|
|
|
|
expect(wasPostProcessed).to.equal(true);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2018-11-19 12:55:50 +01:00
|
|
|
});
|