119 lines
2.9 KiB
JavaScript

const Knex = require('../../../../lib');
const { expect } = require('chai');
const sqliteConfig = require('../../../knexfile').sqlite3;
const FsMigrations =
require('../../../../lib/migrations/migrate/sources/fs-migrations').default;
describe('Migrator', () => {
describe('does not use postProcessResponse for internal queries', (done) => {
let migrationSource;
let knex;
beforeEach(() => {
migrationSource = new FsMigrations('test/unit/migrate/migrations/');
knex = Knex({
...sqliteConfig,
connection: ':memory:',
migrationSource,
postProcessResponse: () => {
throw new Error('Response was processed');
},
});
});
afterEach(() => {
return knex.destroy();
});
it('latest', (done) => {
expect(() => {
return knex.migrate
.latest({
directory: 'test/unit/migrate/migrations',
})
.then(() => {
done();
});
}).not.to.throw();
});
});
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(() => {
return knex.destroy();
});
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();
});
});
describe('uses postProcessResponse for migrations', (done) => {
let migrationSource;
let knex;
beforeEach(() => {
migrationSource = new FsMigrations(
'test/unit/migrate/processed-migrations/'
);
});
afterEach(() => {
return knex.destroy();
});
it('latest', (done) => {
let wasPostProcessed = false;
knex = Knex({
...sqliteConfig,
connection: ':memory:',
migrationSource,
postProcessResponse: (response) => {
wasPostProcessed = true;
return response;
},
});
knex.migrate
.latest({
directory: 'test/unit/migrate/processed-migrations',
})
.then(() => {
expect(wasPostProcessed).to.equal(true);
done();
});
});
});
});