mirror of
https://github.com/n8n-io/n8n.git
synced 2024-11-15 17:14:05 -08:00
67 lines
1.4 KiB
TypeScript
67 lines
1.4 KiB
TypeScript
import type { IrreversibleMigration, ReversibleMigration } from '@/databases/types';
|
|
import { wrapMigration } from '@/databases/utils/migrationHelpers';
|
|
|
|
describe('migrationHelpers.wrapMigration', () => {
|
|
test('throws if passed a migration without up method', async () => {
|
|
//
|
|
// ARRANGE
|
|
//
|
|
class TestMigration {}
|
|
|
|
//
|
|
// ACT & ASSERT
|
|
//
|
|
expect(() => wrapMigration(TestMigration as never)).toThrow(
|
|
'Migration "TestMigration" is missing the method `up`.',
|
|
);
|
|
});
|
|
|
|
test('wraps up method', async () => {
|
|
//
|
|
// ARRANGE
|
|
//
|
|
class TestMigration implements IrreversibleMigration {
|
|
async up() {}
|
|
}
|
|
const originalUp = jest.fn();
|
|
TestMigration.prototype.up = originalUp;
|
|
|
|
//
|
|
// ACT
|
|
//
|
|
wrapMigration(TestMigration);
|
|
await new TestMigration().up();
|
|
|
|
//
|
|
// ASSERT
|
|
//
|
|
expect(TestMigration.prototype.up).not.toBe(originalUp);
|
|
expect(originalUp).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
test('wraps down method', async () => {
|
|
//
|
|
// ARRANGE
|
|
//
|
|
class TestMigration implements ReversibleMigration {
|
|
async up() {}
|
|
|
|
async down() {}
|
|
}
|
|
const originalDown = jest.fn();
|
|
TestMigration.prototype.down = originalDown;
|
|
|
|
//
|
|
// ACT
|
|
//
|
|
wrapMigration(TestMigration);
|
|
await new TestMigration().down();
|
|
|
|
//
|
|
// ASSERT
|
|
//
|
|
expect(TestMigration.prototype.down).not.toBe(originalDown);
|
|
expect(originalDown).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|