Files
immich/server/src/sql-tools/transformers/constraint.transformer.spec.ts
2025-07-08 08:17:40 -04:00

100 lines
3.0 KiB
TypeScript

import { BaseContext } from 'src/sql-tools/contexts/base-context';
import { transformConstraints } from 'src/sql-tools/transformers/constraint.transformer';
import { ConstraintType } from 'src/sql-tools/types';
import { describe, expect, it } from 'vitest';
const ctx = new BaseContext({});
describe(transformConstraints.name, () => {
describe('ConstraintAdd', () => {
describe('primary keys', () => {
it('should work', () => {
expect(
transformConstraints(ctx, {
type: 'ConstraintAdd',
constraint: {
type: ConstraintType.PRIMARY_KEY,
name: 'PK_test',
tableName: 'table1',
columnNames: ['id'],
synchronize: true,
},
reason: 'unknown',
}),
).toEqual('ALTER TABLE "table1" ADD CONSTRAINT "PK_test" PRIMARY KEY ("id");');
});
});
describe('foreign keys', () => {
it('should work', () => {
expect(
transformConstraints(ctx, {
type: 'ConstraintAdd',
constraint: {
type: ConstraintType.FOREIGN_KEY,
name: 'FK_test',
tableName: 'table1',
columnNames: ['parentId'],
referenceColumnNames: ['id'],
referenceTableName: 'table2',
synchronize: true,
},
reason: 'unknown',
}),
).toEqual(
'ALTER TABLE "table1" ADD CONSTRAINT "FK_test" FOREIGN KEY ("parentId") REFERENCES "table2" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION;',
);
});
});
describe('unique', () => {
it('should work', () => {
expect(
transformConstraints(ctx, {
type: 'ConstraintAdd',
constraint: {
type: ConstraintType.UNIQUE,
name: 'UQ_test',
tableName: 'table1',
columnNames: ['id'],
synchronize: true,
},
reason: 'unknown',
}),
).toEqual('ALTER TABLE "table1" ADD CONSTRAINT "UQ_test" UNIQUE ("id");');
});
});
describe('check', () => {
it('should work', () => {
expect(
transformConstraints(ctx, {
type: 'ConstraintAdd',
constraint: {
type: ConstraintType.CHECK,
name: 'CHK_test',
tableName: 'table1',
expression: '"id" IS NOT NULL',
synchronize: true,
},
reason: 'unknown',
}),
).toEqual('ALTER TABLE "table1" ADD CONSTRAINT "CHK_test" CHECK ("id" IS NOT NULL);');
});
});
});
describe('ConstraintDrop', () => {
it('should work', () => {
expect(
transformConstraints(ctx, {
type: 'ConstraintDrop',
tableName: 'table1',
constraintName: 'PK_test',
reason: 'unknown',
}),
).toEqual(`ALTER TABLE "table1" DROP CONSTRAINT "PK_test";`);
});
});
});