2018-07-17 09:41:44 +02:00
|
|
|
/*eslint no-var:0, indent:0, max-len:0 */
|
|
|
|
'use strict';
|
|
|
|
|
2018-08-24 11:39:20 +02:00
|
|
|
const { expect } = require('chai');
|
2019-03-09 17:39:55 -05:00
|
|
|
const sinon = require('sinon');
|
2018-07-17 09:41:44 +02:00
|
|
|
const mockFs = require('mock-fs');
|
2020-12-28 16:55:08 +02:00
|
|
|
const migrationListResolver = require('../../../../lib/migrations/migrate/migration-list-resolver');
|
|
|
|
const {
|
|
|
|
FsMigrations,
|
|
|
|
} = require('../../../../lib/migrations/migrate/sources/fs-migrations');
|
2018-08-24 11:39:20 +02:00
|
|
|
|
2018-07-17 09:41:44 +02:00
|
|
|
describe('migration-list-resolver', () => {
|
2018-09-12 19:58:37 +08:00
|
|
|
describe('listAll', () => {
|
|
|
|
let migrationSource;
|
2018-07-17 09:41:44 +02:00
|
|
|
before(() => {
|
2018-09-12 19:58:37 +08:00
|
|
|
migrationSource = new FsMigrations('test/integration/migrate/migration');
|
2018-07-17 09:41:44 +02:00
|
|
|
mockFs({
|
|
|
|
'test/integration/migrate/migration': {
|
2020-10-24 10:56:09 -04:00
|
|
|
'cjs-migration.cjs': 'cjs migration content',
|
2018-07-17 09:41:44 +02:00
|
|
|
'co-migration.co': 'co migation content',
|
|
|
|
'coffee-migration.coffee': 'coffee migation content',
|
|
|
|
'eg-migration.eg': 'eg migation content',
|
|
|
|
'iced-migration.iced': 'iced migation content',
|
|
|
|
'js-migration.js': 'js migation content',
|
|
|
|
'litcoffee-migration.litcoffee': 'litcoffee migation content',
|
|
|
|
'ls-migration.ls': 'ls migation content',
|
|
|
|
'ts-migration.ts': 'ts migation content',
|
|
|
|
'useless.txt': 'i am not a migration',
|
|
|
|
},
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
after(() => {
|
|
|
|
mockFs.restore();
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should include all supported extensions by default', () => {
|
2018-09-12 19:58:37 +08:00
|
|
|
return migrationListResolver.listAll(migrationSource).then((list) => {
|
|
|
|
expect(list).to.eql([
|
2020-10-24 10:56:09 -04:00
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: 'cjs-migration.cjs',
|
|
|
|
},
|
2018-09-12 19:58:37 +08:00
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: 'co-migration.co',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: 'coffee-migration.coffee',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: 'eg-migration.eg',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: 'iced-migration.iced',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: 'js-migration.js',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: 'litcoffee-migration.litcoffee',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: 'ls-migration.ls',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: 'ts-migration.ts',
|
|
|
|
},
|
|
|
|
]);
|
|
|
|
});
|
2018-07-17 09:41:44 +02:00
|
|
|
});
|
|
|
|
|
2020-04-19 00:40:23 +02:00
|
|
|
it('should include only files with specified extensions', function () {
|
2018-07-17 09:41:44 +02:00
|
|
|
return migrationListResolver
|
2018-09-12 19:58:37 +08:00
|
|
|
.listAll(migrationSource, ['.ts', '.js'])
|
2018-07-17 09:41:44 +02:00
|
|
|
.then((list) => {
|
2018-09-12 19:58:37 +08:00
|
|
|
expect(list).to.eql([
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: 'js-migration.js',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: 'ts-migration.ts',
|
|
|
|
},
|
2018-08-24 11:39:20 +02:00
|
|
|
]);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('listAll - multiple directories', () => {
|
|
|
|
before(() => {
|
|
|
|
mockFs({
|
|
|
|
'test/integration/migrate/migration': {
|
|
|
|
'006_migration.js': 'dummy',
|
|
|
|
'001_migration.js': 'dummy',
|
|
|
|
'005_migration.js': 'dummy',
|
|
|
|
},
|
|
|
|
'test/integration/migrate/seeds': {
|
|
|
|
'004_migration.js': 'dummy',
|
|
|
|
'002_migration.js': 'dummy',
|
|
|
|
'003_migration.js': 'dummy',
|
|
|
|
},
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
after(() => {
|
|
|
|
mockFs.restore();
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should include files from both folders, sorted globally', () => {
|
2018-09-12 19:58:37 +08:00
|
|
|
const migrationSource = new FsMigrations([
|
|
|
|
'test/integration/migrate/migration',
|
|
|
|
'test/integration/migrate/seeds',
|
|
|
|
]);
|
2018-08-24 11:39:20 +02:00
|
|
|
|
2018-09-12 19:58:37 +08:00
|
|
|
return migrationListResolver.listAll(migrationSource).then((list) => {
|
|
|
|
expect(list).to.eql([
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: '001_migration.js',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/seeds',
|
|
|
|
file: '002_migration.js',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/seeds',
|
|
|
|
file: '003_migration.js',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/seeds',
|
|
|
|
file: '004_migration.js',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: '005_migration.js',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: '006_migration.js',
|
|
|
|
},
|
|
|
|
]);
|
|
|
|
});
|
2018-08-24 11:39:20 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
it('should include files from both folders, sorted within their folders', () => {
|
2018-09-12 19:58:37 +08:00
|
|
|
const migrationSource = new FsMigrations(
|
|
|
|
[
|
|
|
|
'test/integration/migrate/migration',
|
|
|
|
'test/integration/migrate/seeds',
|
|
|
|
],
|
|
|
|
true
|
|
|
|
);
|
|
|
|
|
2018-08-24 11:39:20 +02:00
|
|
|
return migrationListResolver
|
2018-09-12 19:58:37 +08:00
|
|
|
.listAll(migrationSource, ['.js'])
|
2018-08-24 11:39:20 +02:00
|
|
|
.then((list) => {
|
2018-09-12 19:58:37 +08:00
|
|
|
expect(list).to.eql([
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: '001_migration.js',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: '005_migration.js',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/migration',
|
|
|
|
file: '006_migration.js',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/seeds',
|
|
|
|
file: '002_migration.js',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/seeds',
|
|
|
|
file: '003_migration.js',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
directory: 'test/integration/migrate/seeds',
|
|
|
|
file: '004_migration.js',
|
|
|
|
},
|
2018-08-24 11:39:20 +02:00
|
|
|
]);
|
2018-07-17 09:41:44 +02:00
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2019-03-09 17:39:55 -05:00
|
|
|
|
|
|
|
describe('listAllAndCompleted', () => {
|
|
|
|
it('should pass loadExtensions param to listAll', () => {
|
|
|
|
after(() => {
|
|
|
|
sinon.restore();
|
|
|
|
});
|
|
|
|
|
|
|
|
const migrationSource = new FsMigrations([], true);
|
|
|
|
|
|
|
|
const stub = sinon
|
|
|
|
.stub(migrationSource, 'getMigrations')
|
2020-02-25 03:24:30 +03:00
|
|
|
.callsFake(async () => true);
|
2019-03-09 17:39:55 -05:00
|
|
|
return migrationListResolver
|
|
|
|
.listAll(migrationSource, ['.ts'])
|
|
|
|
.then(() => {
|
|
|
|
sinon.assert.calledWith(stub, ['.ts']);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2018-07-17 09:41:44 +02:00
|
|
|
});
|