@smartive/graphql-magic 23.8.0-next.5 → 23.8.0-next.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -3
- package/dist/bin/gqm.cjs +17 -0
- package/dist/cjs/index.cjs +17 -0
- package/dist/esm/migrations/generate.d.ts +1 -0
- package/dist/esm/migrations/generate.js +16 -0
- package/dist/esm/migrations/generate.js.map +1 -1
- package/docs/docs/2-models.md +16 -17
- package/package.json +1 -1
- package/src/migrations/generate.ts +27 -0
- package/tests/unit/migration-constraints.spec.ts +75 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
## [23.8.0-next.
|
|
1
|
+
## [23.8.0-next.6](https://github.com/smartive/graphql-magic/compare/v23.8.0-next.5...v23.8.0-next.6) (2026-03-06)
|
|
2
2
|
|
|
3
|
-
###
|
|
3
|
+
### Bug Fixes
|
|
4
4
|
|
|
5
|
-
*
|
|
5
|
+
* Review ([20b43c2](https://github.com/smartive/graphql-magic/commit/20b43c22bc63a26edddb19594bc75e2cf429911c))
|
package/dist/bin/gqm.cjs
CHANGED
|
@@ -1278,6 +1278,7 @@ var MigrationGenerator = class _MigrationGenerator {
|
|
|
1278
1278
|
this.addExcludeConstraint(table, constraintName, entry);
|
|
1279
1279
|
});
|
|
1280
1280
|
} else if (entry.kind === "constraint_trigger") {
|
|
1281
|
+
this.validateConstraintTrigger(model, entry);
|
|
1281
1282
|
const table = model.name;
|
|
1282
1283
|
const constraintName = this.getConstraintName(model, entry, i);
|
|
1283
1284
|
up.push(() => {
|
|
@@ -1384,6 +1385,7 @@ var MigrationGenerator = class _MigrationGenerator {
|
|
|
1384
1385
|
});
|
|
1385
1386
|
}
|
|
1386
1387
|
} else if (entry.kind === "constraint_trigger") {
|
|
1388
|
+
this.validateConstraintTrigger(model, entry);
|
|
1387
1389
|
const newDef = this.normalizeTriggerDef(this.buildConstraintTriggerDef(table, constraintName, entry));
|
|
1388
1390
|
const existing = existingTriggerMap?.get(constraintName);
|
|
1389
1391
|
if (existing === void 0) {
|
|
@@ -2059,6 +2061,21 @@ var MigrationGenerator = class _MigrationGenerator {
|
|
|
2059
2061
|
const executeClause = argsStr ? `EXECUTE FUNCTION ${entry.function.name}(${argsStr})` : `EXECUTE FUNCTION ${entry.function.name}()`;
|
|
2060
2062
|
return `CREATE CONSTRAINT TRIGGER "${constraintName}" ${entry.when} ${eventsStr} ON "${table}"${deferrableClause} FOR EACH ${entry.forEach} ${executeClause}`;
|
|
2061
2063
|
}
|
|
2064
|
+
validateConstraintTrigger(model, entry) {
|
|
2065
|
+
const fnName = entry.function.name;
|
|
2066
|
+
if (!this.parsedFunctions || this.parsedFunctions.length === 0) {
|
|
2067
|
+
throw new Error(
|
|
2068
|
+
`Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which must be defined in functions.ts. Ensure functions.ts exists and defines the function.`
|
|
2069
|
+
);
|
|
2070
|
+
}
|
|
2071
|
+
const defined = this.parsedFunctions.find((pf) => pf.name === fnName);
|
|
2072
|
+
if (!defined) {
|
|
2073
|
+
const validList = this.parsedFunctions.map((pf) => pf.name).sort().join(", ");
|
|
2074
|
+
throw new Error(
|
|
2075
|
+
`Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which is not defined in functions.ts. Defined functions: ${validList || "(none)"}.`
|
|
2076
|
+
);
|
|
2077
|
+
}
|
|
2078
|
+
}
|
|
2062
2079
|
addConstraintTrigger(table, constraintName, entry) {
|
|
2063
2080
|
const eventsStr = entry.events.join(" OR ");
|
|
2064
2081
|
const deferrableClause = entry.deferrable ? ` DEFERRABLE ${entry.deferrable}` : "";
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -3293,6 +3293,7 @@ var MigrationGenerator = class _MigrationGenerator {
|
|
|
3293
3293
|
this.addExcludeConstraint(table, constraintName, entry);
|
|
3294
3294
|
});
|
|
3295
3295
|
} else if (entry.kind === "constraint_trigger") {
|
|
3296
|
+
this.validateConstraintTrigger(model, entry);
|
|
3296
3297
|
const table = model.name;
|
|
3297
3298
|
const constraintName = this.getConstraintName(model, entry, i);
|
|
3298
3299
|
up.push(() => {
|
|
@@ -3399,6 +3400,7 @@ var MigrationGenerator = class _MigrationGenerator {
|
|
|
3399
3400
|
});
|
|
3400
3401
|
}
|
|
3401
3402
|
} else if (entry.kind === "constraint_trigger") {
|
|
3403
|
+
this.validateConstraintTrigger(model, entry);
|
|
3402
3404
|
const newDef = this.normalizeTriggerDef(this.buildConstraintTriggerDef(table, constraintName, entry));
|
|
3403
3405
|
const existing = existingTriggerMap?.get(constraintName);
|
|
3404
3406
|
if (existing === void 0) {
|
|
@@ -4074,6 +4076,21 @@ var MigrationGenerator = class _MigrationGenerator {
|
|
|
4074
4076
|
const executeClause = argsStr ? `EXECUTE FUNCTION ${entry.function.name}(${argsStr})` : `EXECUTE FUNCTION ${entry.function.name}()`;
|
|
4075
4077
|
return `CREATE CONSTRAINT TRIGGER "${constraintName}" ${entry.when} ${eventsStr} ON "${table}"${deferrableClause} FOR EACH ${entry.forEach} ${executeClause}`;
|
|
4076
4078
|
}
|
|
4079
|
+
validateConstraintTrigger(model, entry) {
|
|
4080
|
+
const fnName = entry.function.name;
|
|
4081
|
+
if (!this.parsedFunctions || this.parsedFunctions.length === 0) {
|
|
4082
|
+
throw new Error(
|
|
4083
|
+
`Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which must be defined in functions.ts. Ensure functions.ts exists and defines the function.`
|
|
4084
|
+
);
|
|
4085
|
+
}
|
|
4086
|
+
const defined = this.parsedFunctions.find((pf) => pf.name === fnName);
|
|
4087
|
+
if (!defined) {
|
|
4088
|
+
const validList = this.parsedFunctions.map((pf) => pf.name).sort().join(", ");
|
|
4089
|
+
throw new Error(
|
|
4090
|
+
`Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which is not defined in functions.ts. Defined functions: ${validList || "(none)"}.`
|
|
4091
|
+
);
|
|
4092
|
+
}
|
|
4093
|
+
}
|
|
4077
4094
|
addConstraintTrigger(table, constraintName, entry) {
|
|
4078
4095
|
const eventsStr = entry.events.join(" OR ");
|
|
4079
4096
|
const deferrableClause = entry.deferrable ? ` DEFERRABLE ${entry.deferrable}` : "";
|
|
@@ -58,6 +58,7 @@ export declare class MigrationGenerator {
|
|
|
58
58
|
private addExcludeConstraint;
|
|
59
59
|
private dropExcludeConstraint;
|
|
60
60
|
private buildConstraintTriggerDef;
|
|
61
|
+
private validateConstraintTrigger;
|
|
61
62
|
private addConstraintTrigger;
|
|
62
63
|
private dropConstraintTrigger;
|
|
63
64
|
private value;
|
|
@@ -197,6 +197,7 @@ export class MigrationGenerator {
|
|
|
197
197
|
});
|
|
198
198
|
}
|
|
199
199
|
else if (entry.kind === 'constraint_trigger') {
|
|
200
|
+
this.validateConstraintTrigger(model, entry);
|
|
200
201
|
const table = model.name;
|
|
201
202
|
const constraintName = this.getConstraintName(model, entry, i);
|
|
202
203
|
up.push(() => {
|
|
@@ -294,6 +295,7 @@ export class MigrationGenerator {
|
|
|
294
295
|
}
|
|
295
296
|
}
|
|
296
297
|
else if (entry.kind === 'constraint_trigger') {
|
|
298
|
+
this.validateConstraintTrigger(model, entry);
|
|
297
299
|
const newDef = this.normalizeTriggerDef(this.buildConstraintTriggerDef(table, constraintName, entry));
|
|
298
300
|
const existing = existingTriggerMap?.get(constraintName);
|
|
299
301
|
if (existing === undefined) {
|
|
@@ -990,6 +992,20 @@ export class MigrationGenerator {
|
|
|
990
992
|
: `EXECUTE FUNCTION ${entry.function.name}()`;
|
|
991
993
|
return `CREATE CONSTRAINT TRIGGER "${constraintName}" ${entry.when} ${eventsStr} ON "${table}"${deferrableClause} FOR EACH ${entry.forEach} ${executeClause}`;
|
|
992
994
|
}
|
|
995
|
+
validateConstraintTrigger(model, entry) {
|
|
996
|
+
const fnName = entry.function.name;
|
|
997
|
+
if (!this.parsedFunctions || this.parsedFunctions.length === 0) {
|
|
998
|
+
throw new Error(`Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which must be defined in functions.ts. Ensure functions.ts exists and defines the function.`);
|
|
999
|
+
}
|
|
1000
|
+
const defined = this.parsedFunctions.find((pf) => pf.name === fnName);
|
|
1001
|
+
if (!defined) {
|
|
1002
|
+
const validList = this.parsedFunctions
|
|
1003
|
+
.map((pf) => pf.name)
|
|
1004
|
+
.sort()
|
|
1005
|
+
.join(', ');
|
|
1006
|
+
throw new Error(`Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which is not defined in functions.ts. Defined functions: ${validList || '(none)'}.`);
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
993
1009
|
addConstraintTrigger(table, constraintName, entry) {
|
|
994
1010
|
const eventsStr = entry.events.join(' OR ');
|
|
995
1011
|
const deferrableClause = entry.deferrable ? ` DEFERRABLE ${entry.deferrable}` : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/migrations/generate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/migrations/generate.ts"],"names":[],"mappings":"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"}
|
package/docs/docs/2-models.md
CHANGED
|
@@ -7,12 +7,11 @@ const modelDefinitions: ModelDefinitions = [
|
|
|
7
7
|
{
|
|
8
8
|
kind: 'entity',
|
|
9
9
|
name: 'User',
|
|
10
|
-
fields: [
|
|
11
|
-
]
|
|
10
|
+
fields: [],
|
|
12
11
|
},
|
|
13
|
-
]
|
|
12
|
+
];
|
|
14
13
|
|
|
15
|
-
export const models = new Models(modelDefinitions)
|
|
14
|
+
export const models = new Models(modelDefinitions);
|
|
16
15
|
```
|
|
17
16
|
|
|
18
17
|
Models can have the following kinds:
|
|
@@ -86,9 +85,9 @@ the following GraphQL query becomes possible
|
|
|
86
85
|
|
|
87
86
|
```graphql
|
|
88
87
|
query {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
88
|
+
post(where: { id: "bf9496bb-9302-4528-aebc-c97ae49c52fa" }) {
|
|
89
|
+
title
|
|
90
|
+
}
|
|
92
91
|
}
|
|
93
92
|
```
|
|
94
93
|
|
|
@@ -111,9 +110,9 @@ the following GraphQL query becomes possible
|
|
|
111
110
|
|
|
112
111
|
```graphql
|
|
113
112
|
query {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
113
|
+
posts {
|
|
114
|
+
title
|
|
115
|
+
}
|
|
117
116
|
}
|
|
118
117
|
```
|
|
119
118
|
|
|
@@ -137,7 +136,7 @@ Optional array of database constraints for this entity. Supported kinds: `check`
|
|
|
137
136
|
|
|
138
137
|
- **`name`**: A short name for the constraint (used in migration constraint names).
|
|
139
138
|
- **`expression`**: A PostgreSQL boolean expression. Column names **must** be double-quoted (e.g. `"score"`) so they are validated against the model’s columns.
|
|
140
|
-
- **`message
|
|
139
|
+
- **`message`**: Human-readable message for when the constraint fails. Not used by graphql-magic; available for application-level error mapping.
|
|
141
140
|
- **`deferrable`** (optional): `'INITIALLY DEFERRED'` or `'INITIALLY IMMEDIATE'`.
|
|
142
141
|
- **`notValid`** (optional): When `true`, adds the constraint with `NOT VALID`, allowing zero-downtime migrations (existing rows are not validated; use `VALIDATE CONSTRAINT` later).
|
|
143
142
|
|
|
@@ -198,7 +197,7 @@ An enum that is available as type in the database:
|
|
|
198
197
|
|
|
199
198
|
## Raw enums
|
|
200
199
|
|
|
201
|
-
An enum that is
|
|
200
|
+
An enum that is _not_ available as type in the database:
|
|
202
201
|
|
|
203
202
|
```ts
|
|
204
203
|
{
|
|
@@ -238,7 +237,7 @@ Types that can be inherited from, e.g.
|
|
|
238
237
|
|
|
239
238
|
## Objects
|
|
240
239
|
|
|
241
|
-
Custom types that
|
|
240
|
+
Custom types that _don't_ correspond to database tables. To be used e.g. as return types for custom resolvers or JSON fields. These can also be used to extend `Query` or `Mutation` which are themselves of that type. E.g.
|
|
242
241
|
|
|
243
242
|
```ts
|
|
244
243
|
{
|
|
@@ -273,10 +272,10 @@ will make this query possible:
|
|
|
273
272
|
|
|
274
273
|
```graphql
|
|
275
274
|
query {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
275
|
+
stats {
|
|
276
|
+
usersCount
|
|
277
|
+
postsCount
|
|
278
|
+
}
|
|
280
279
|
}
|
|
281
280
|
```
|
|
282
281
|
|
package/package.json
CHANGED
|
@@ -262,6 +262,7 @@ export class MigrationGenerator {
|
|
|
262
262
|
this.addExcludeConstraint(table, constraintName, entry);
|
|
263
263
|
});
|
|
264
264
|
} else if (entry.kind === 'constraint_trigger') {
|
|
265
|
+
this.validateConstraintTrigger(model, entry);
|
|
265
266
|
const table = model.name;
|
|
266
267
|
const constraintName = this.getConstraintName(model, entry, i);
|
|
267
268
|
up.push(() => {
|
|
@@ -387,6 +388,7 @@ export class MigrationGenerator {
|
|
|
387
388
|
});
|
|
388
389
|
}
|
|
389
390
|
} else if (entry.kind === 'constraint_trigger') {
|
|
391
|
+
this.validateConstraintTrigger(model, entry);
|
|
390
392
|
const newDef = this.normalizeTriggerDef(this.buildConstraintTriggerDef(table, constraintName, entry));
|
|
391
393
|
const existing = existingTriggerMap?.get(constraintName);
|
|
392
394
|
if (existing === undefined) {
|
|
@@ -1301,6 +1303,31 @@ export class MigrationGenerator {
|
|
|
1301
1303
|
return `CREATE CONSTRAINT TRIGGER "${constraintName}" ${entry.when} ${eventsStr} ON "${table}"${deferrableClause} FOR EACH ${entry.forEach} ${executeClause}`;
|
|
1302
1304
|
}
|
|
1303
1305
|
|
|
1306
|
+
private validateConstraintTrigger(
|
|
1307
|
+
model: EntityModel,
|
|
1308
|
+
entry: {
|
|
1309
|
+
name: string;
|
|
1310
|
+
function: { name: string; args?: string[] };
|
|
1311
|
+
},
|
|
1312
|
+
): void {
|
|
1313
|
+
const fnName = entry.function.name;
|
|
1314
|
+
if (!this.parsedFunctions || this.parsedFunctions.length === 0) {
|
|
1315
|
+
throw new Error(
|
|
1316
|
+
`Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which must be defined in functions.ts. Ensure functions.ts exists and defines the function.`,
|
|
1317
|
+
);
|
|
1318
|
+
}
|
|
1319
|
+
const defined = this.parsedFunctions.find((pf) => pf.name === fnName);
|
|
1320
|
+
if (!defined) {
|
|
1321
|
+
const validList = this.parsedFunctions
|
|
1322
|
+
.map((pf) => pf.name)
|
|
1323
|
+
.sort()
|
|
1324
|
+
.join(', ');
|
|
1325
|
+
throw new Error(
|
|
1326
|
+
`Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which is not defined in functions.ts. Defined functions: ${validList || '(none)'}.`,
|
|
1327
|
+
);
|
|
1328
|
+
}
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1304
1331
|
private addConstraintTrigger(
|
|
1305
1332
|
table: string,
|
|
1306
1333
|
constraintName: string,
|
|
@@ -87,9 +87,7 @@ const baseColumnsByTable: Record<string, MockColumn[]> = {
|
|
|
87
87
|
],
|
|
88
88
|
};
|
|
89
89
|
|
|
90
|
-
const createProductModels = (
|
|
91
|
-
constraints: { kind: 'check'; name: string; expression: string; notValid?: boolean }[],
|
|
92
|
-
) => {
|
|
90
|
+
const createProductModels = (constraints: { kind: 'check'; name: string; expression: string; notValid?: boolean }[]) => {
|
|
93
91
|
const definitions: ModelDefinitions = [
|
|
94
92
|
{
|
|
95
93
|
kind: 'entity',
|
|
@@ -163,9 +161,7 @@ describe('MigrationGenerator check constraints', () => {
|
|
|
163
161
|
it('does not detect changes for equivalent expressions with quoted vs unquoted lowercase identifiers', async () => {
|
|
164
162
|
jest
|
|
165
163
|
.spyOn(MigrationGenerator.prototype as any, 'canonicalizeCheckExpressionWithPostgres')
|
|
166
|
-
.mockImplementation(
|
|
167
|
-
async () => '(deleted = true) OR ("endDate" IS NULL) OR ("startDate" <= "endDate")',
|
|
168
|
-
);
|
|
164
|
+
.mockImplementation(async () => '(deleted = true) OR ("endDate" IS NULL) OR ("startDate" <= "endDate")');
|
|
169
165
|
const models = new Models([
|
|
170
166
|
{
|
|
171
167
|
kind: 'entity',
|
|
@@ -258,9 +254,7 @@ describe('MigrationGenerator check constraints', () => {
|
|
|
258
254
|
|
|
259
255
|
const migration = await generator.generate();
|
|
260
256
|
|
|
261
|
-
expect(migration).toContain(
|
|
262
|
-
'ADD CONSTRAINT "Product_score_non_negative_check_0" CHECK ("score" >= 0) NOT VALID',
|
|
263
|
-
);
|
|
257
|
+
expect(migration).toContain('ADD CONSTRAINT "Product_score_non_negative_check_0" CHECK ("score" >= 0) NOT VALID');
|
|
264
258
|
});
|
|
265
259
|
|
|
266
260
|
it('detects when notValid has changed', async () => {
|
|
@@ -283,9 +277,7 @@ describe('MigrationGenerator check constraints', () => {
|
|
|
283
277
|
|
|
284
278
|
expect(generator.needsMigration).toBe(true);
|
|
285
279
|
expect(migration).toContain('DROP CONSTRAINT "Product_score_non_negative_check_0"');
|
|
286
|
-
expect(migration).toContain(
|
|
287
|
-
'ADD CONSTRAINT "Product_score_non_negative_check_0" CHECK ("score" >= 0) NOT VALID',
|
|
288
|
-
);
|
|
280
|
+
expect(migration).toContain('ADD CONSTRAINT "Product_score_non_negative_check_0" CHECK ("score" >= 0) NOT VALID');
|
|
289
281
|
});
|
|
290
282
|
|
|
291
283
|
it('warns and treats constraint as changed when canonicalization fails', async () => {
|
|
@@ -354,6 +346,77 @@ describe('MigrationGenerator exclude constraints', () => {
|
|
|
354
346
|
});
|
|
355
347
|
});
|
|
356
348
|
|
|
349
|
+
describe('MigrationGenerator constraint_trigger validation', () => {
|
|
350
|
+
const triggerModels = new Models([
|
|
351
|
+
{
|
|
352
|
+
kind: 'entity',
|
|
353
|
+
name: 'PortfolioAllocation',
|
|
354
|
+
fields: [
|
|
355
|
+
{ name: 'portfolioId', type: 'UUID' },
|
|
356
|
+
{ name: 'startDate', type: 'DateTime' },
|
|
357
|
+
{ name: 'endDate', type: 'DateTime' },
|
|
358
|
+
],
|
|
359
|
+
constraints: [
|
|
360
|
+
{
|
|
361
|
+
kind: 'constraint_trigger' as const,
|
|
362
|
+
name: 'contiguous_periods',
|
|
363
|
+
when: 'AFTER' as const,
|
|
364
|
+
events: ['INSERT', 'UPDATE'] as const,
|
|
365
|
+
forEach: 'ROW' as const,
|
|
366
|
+
deferrable: 'INITIALLY DEFERRED' as const,
|
|
367
|
+
function: { name: 'contiguous_periods_check' },
|
|
368
|
+
},
|
|
369
|
+
],
|
|
370
|
+
},
|
|
371
|
+
]);
|
|
372
|
+
|
|
373
|
+
const parsedFunctionsWithMatch = [
|
|
374
|
+
{ name: 'contiguous_periods_check', signature: '', body: '', fullDefinition: '', isAggregate: false },
|
|
375
|
+
];
|
|
376
|
+
|
|
377
|
+
const parsedFunctionsWithoutMatch = [
|
|
378
|
+
{ name: 'other_function', signature: '', body: '', fullDefinition: '', isAggregate: false },
|
|
379
|
+
];
|
|
380
|
+
|
|
381
|
+
const createTriggerGenerator = (
|
|
382
|
+
parsedFunctions: { name: string; signature: string; body: string; fullDefinition: string; isAggregate: boolean }[],
|
|
383
|
+
) => {
|
|
384
|
+
const raw = jest.fn().mockResolvedValue({ rows: [] });
|
|
385
|
+
const knexMock = Object.assign(
|
|
386
|
+
jest.fn().mockReturnValue({
|
|
387
|
+
where: jest.fn().mockReturnValue({ select: jest.fn().mockResolvedValue([]) }),
|
|
388
|
+
}),
|
|
389
|
+
{ raw },
|
|
390
|
+
);
|
|
391
|
+
const generator = new MigrationGenerator(knexMock as never, triggerModels, parsedFunctions);
|
|
392
|
+
(generator as unknown as { schema: unknown }).schema = {
|
|
393
|
+
knex: knexMock,
|
|
394
|
+
tables: jest.fn().mockResolvedValue([]),
|
|
395
|
+
columnInfo: jest.fn().mockResolvedValue([]),
|
|
396
|
+
};
|
|
397
|
+
return generator;
|
|
398
|
+
};
|
|
399
|
+
|
|
400
|
+
it('throws when function is not defined in functions.ts', async () => {
|
|
401
|
+
const generator = createTriggerGenerator(parsedFunctionsWithoutMatch);
|
|
402
|
+
await expect(generator.generate()).rejects.toThrow(
|
|
403
|
+
/Constraint trigger "contiguous_periods" on model PortfolioAllocation references function "contiguous_periods_check" which is not defined in functions.ts/,
|
|
404
|
+
);
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
it('throws when functions.ts is empty or missing', async () => {
|
|
408
|
+
const generator = createTriggerGenerator([]);
|
|
409
|
+
await expect(generator.generate()).rejects.toThrow(
|
|
410
|
+
/references function "contiguous_periods_check" which must be defined in functions.ts/,
|
|
411
|
+
);
|
|
412
|
+
});
|
|
413
|
+
|
|
414
|
+
it('does not throw when function is defined in functions.ts', async () => {
|
|
415
|
+
const generator = createTriggerGenerator(parsedFunctionsWithMatch);
|
|
416
|
+
await expect(generator.generate()).resolves.not.toThrow();
|
|
417
|
+
});
|
|
418
|
+
});
|
|
419
|
+
|
|
357
420
|
describe('MigrationGenerator canonicalizeCheckExpressionWithPostgres', () => {
|
|
358
421
|
afterEach(() => {
|
|
359
422
|
jest.restoreAllMocks();
|