@expo/entity-database-adapter-knex 0.34.0 → 0.36.0

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.
Files changed (41) hide show
  1. package/build/PostgresEntityDatabaseAdapter.d.ts +1 -1
  2. package/build/PostgresEntityDatabaseAdapter.js.map +1 -1
  3. package/build/PostgresEntityDatabaseAdapterProvider.d.ts +1 -1
  4. package/build/PostgresEntityQueryContextProvider.js +1 -0
  5. package/build/PostgresEntityQueryContextProvider.js.map +1 -1
  6. package/build/__integration-tests__/PostgresEntityIntegration-test.js +118 -135
  7. package/build/__integration-tests__/PostgresEntityIntegration-test.js.map +1 -1
  8. package/build/__integration-tests__/PostgresEntityQueryContextProvider-test.js +5 -15
  9. package/build/__integration-tests__/PostgresEntityQueryContextProvider-test.js.map +1 -1
  10. package/build/__integration-tests__/PostgresInvalidSetup-test.js +9 -28
  11. package/build/__integration-tests__/PostgresInvalidSetup-test.js.map +1 -1
  12. package/build/__integration-tests__/errors-test.js +13 -15
  13. package/build/__integration-tests__/errors-test.js.map +1 -1
  14. package/build/errors/__tests__/wrapNativePostgresCallAsync-test.js.map +1 -1
  15. package/build/errors/wrapNativePostgresCallAsync.js.map +1 -1
  16. package/build/testfixtures/ErrorsTestEntity.js +12 -15
  17. package/build/testfixtures/ErrorsTestEntity.js.map +1 -1
  18. package/build/testfixtures/InvalidTestEntity.js +12 -15
  19. package/build/testfixtures/InvalidTestEntity.js.map +1 -1
  20. package/build/testfixtures/PostgresTestEntity.js +12 -15
  21. package/build/testfixtures/PostgresTestEntity.js.map +1 -1
  22. package/build/testfixtures/PostgresTriggerTestEntity.js +16 -15
  23. package/build/testfixtures/PostgresTriggerTestEntity.js.map +1 -1
  24. package/build/testfixtures/PostgresUniqueTestEntity.js +12 -15
  25. package/build/testfixtures/PostgresUniqueTestEntity.js.map +1 -1
  26. package/build/testfixtures/PostgresValidatorTestEntity.js +14 -15
  27. package/build/testfixtures/PostgresValidatorTestEntity.js.map +1 -1
  28. package/package.json +5 -5
  29. package/src/PostgresEntityDatabaseAdapter.ts +15 -13
  30. package/src/PostgresEntityDatabaseAdapterProvider.ts +2 -2
  31. package/src/PostgresEntityQueryContextProvider.ts +5 -5
  32. package/src/__integration-tests__/PostgresEntityIntegration-test.ts +195 -456
  33. package/src/__integration-tests__/PostgresEntityQueryContextProvider-test.ts +5 -30
  34. package/src/__integration-tests__/PostgresInvalidSetup-test.ts +11 -57
  35. package/src/__integration-tests__/errors-test.ts +25 -66
  36. package/src/__tests__/EntityFields-test.ts +3 -3
  37. package/src/errors/wrapNativePostgresCallAsync.ts +2 -2
  38. package/src/testfixtures/ErrorsTestEntity.ts +2 -2
  39. package/src/testfixtures/PostgresTriggerTestEntity.ts +10 -4
  40. package/src/testfixtures/PostgresValidatorTestEntity.ts +2 -2
  41. package/src/testfixtures/createKnexIntegrationTestEntityCompanionProvider.ts +2 -2
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  OrderByOrdering,
3
3
  createUnitTestEntityCompanionProvider,
4
- enforceResultsAsync,
5
4
  ViewerContext,
6
5
  TransactionIsolationLevel,
7
6
  } from '@expo/entity';
8
7
  import { enforceAsyncResult } from '@expo/results';
9
8
  import { knex, Knex } from 'knex';
10
9
  import nullthrows from 'nullthrows';
10
+ import { setTimeout } from 'timers/promises';
11
11
 
12
12
  import PostgresTestEntity from '../testfixtures/PostgresTestEntity';
13
13
  import PostgresTriggerTestEntity from '../testfixtures/PostgresTriggerTestEntity';
@@ -42,34 +42,16 @@ describe('postgres entity integration', () => {
42
42
  it('supports parallel partial updates', async () => {
43
43
  const vc = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
44
44
  const entity = await enforceAsyncResult(
45
- PostgresTestEntity.creator(
46
- vc,
47
- vc.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
48
- )
49
- .setField('name', 'hello')
50
- .createAsync()
45
+ PostgresTestEntity.creator(vc).setField('name', 'hello').createAsync(),
51
46
  );
52
47
 
53
48
  // update two different fields at the same time (from the same entity)
54
49
  await Promise.all([
55
- PostgresTestEntity.updater(
56
- entity,
57
- vc.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
58
- )
59
- .setField('hasACat', true)
60
- .updateAsync(),
61
- PostgresTestEntity.updater(
62
- entity,
63
- vc.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
64
- )
65
- .setField('hasADog', false)
66
- .updateAsync(),
50
+ PostgresTestEntity.updater(entity).setField('hasACat', true).updateAsync(),
51
+ PostgresTestEntity.updater(entity).setField('hasADog', false).updateAsync(),
67
52
  ]);
68
53
 
69
- const loadedEntity = await PostgresTestEntity.loader(
70
- vc,
71
- vc.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
72
- )
54
+ const loadedEntity = await PostgresTestEntity.loader(vc)
73
55
  .enforcing()
74
56
  .loadByIDAsync(entity.getID());
75
57
 
@@ -80,49 +62,24 @@ describe('postgres entity integration', () => {
80
62
  describe('empty creates and updates', () => {
81
63
  it('allows empty create', async () => {
82
64
  const vc = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
83
- const entity = await enforceAsyncResult(
84
- PostgresTestEntity.creator(
85
- vc,
86
- vc.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
87
- ).createAsync()
88
- );
65
+ const entity = await enforceAsyncResult(PostgresTestEntity.creator(vc).createAsync());
89
66
  expect(entity.getID()).toBeTruthy();
90
67
  });
91
68
 
92
69
  it('throws knex error upon empty update', async () => {
93
70
  const vc = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
94
71
  const entity = await enforceAsyncResult(
95
- PostgresTestEntity.creator(
96
- vc,
97
- vc.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
98
- )
99
- .setField('name', 'hello')
100
- .createAsync()
72
+ PostgresTestEntity.creator(vc).setField('name', 'hello').createAsync(),
101
73
  );
102
- await expect(
103
- PostgresTestEntity.updater(
104
- entity,
105
- vc.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
106
- ).updateAsync()
107
- ).rejects.toThrow();
74
+ await expect(PostgresTestEntity.updater(entity).updateAsync()).rejects.toThrow();
108
75
  });
109
76
 
110
77
  it('throws error upon empty update for stub database adapter to match behavior', async () => {
111
78
  const vc = new ViewerContext(createUnitTestEntityCompanionProvider());
112
79
  const entity = await enforceAsyncResult(
113
- PostgresTestEntity.creator(
114
- vc,
115
- vc.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
116
- )
117
- .setField('name', 'hello')
118
- .createAsync()
80
+ PostgresTestEntity.creator(vc).setField('name', 'hello').createAsync(),
119
81
  );
120
- await expect(
121
- PostgresTestEntity.updater(
122
- entity,
123
- vc.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
124
- ).updateAsync()
125
- ).rejects.toThrow();
82
+ await expect(PostgresTestEntity.updater(entity).updateAsync()).rejects.toThrow();
126
83
  });
127
84
  });
128
85
 
@@ -131,84 +88,89 @@ describe('postgres entity integration', () => {
131
88
 
132
89
  // put one in the DB
133
90
  const firstEntity = await enforceAsyncResult(
134
- PostgresTestEntity.creator(
135
- vc1,
136
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
137
- )
138
- .setField('name', 'hello')
139
- .createAsync()
91
+ PostgresTestEntity.creator(vc1).setField('name', 'hello').createAsync(),
140
92
  );
141
93
 
142
- await enforceAsyncResult(
143
- PostgresTestEntity.loader(
144
- vc1,
145
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
146
- ).loadByIDAsync(firstEntity.getID())
147
- );
94
+ await PostgresTestEntity.loader(vc1).enforcing().loadByIDAsync(firstEntity.getID());
148
95
 
149
96
  const errorToThrow = new Error('Intentional error');
150
97
 
151
98
  await expect(
152
- vc1.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
153
- // put another in the DB that will be rolled back due to error thrown
154
- await enforceAsyncResult(
155
- PostgresTestEntity.creator(vc1, queryContext).setField('name', 'hello').createAsync()
156
- );
99
+ vc1.runInTransactionForDatabaseAdaptorFlavorAsync(
100
+ 'postgres',
101
+ async (queryContext) => {
102
+ // put another in the DB that will be rolled back due to error thrown
103
+ await enforceAsyncResult(
104
+ PostgresTestEntity.creator(vc1, queryContext).setField('name', 'hello').createAsync(),
105
+ );
157
106
 
158
- throw errorToThrow;
159
- })
107
+ throw errorToThrow;
108
+ },
109
+ {}, // test empty transaction config
110
+ ),
160
111
  ).rejects.toEqual(errorToThrow);
161
112
 
162
- const entities = await enforceResultsAsync(
163
- PostgresTestEntity.loader(
164
- vc1,
165
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
166
- ).loadManyByFieldEqualingAsync('name', 'hello')
167
- );
113
+ const entities = await PostgresTestEntity.loader(vc1)
114
+ .enforcing()
115
+ .loadManyByFieldEqualingAsync('name', 'hello');
168
116
  expect(entities).toHaveLength(1);
169
117
  });
170
118
 
171
- it('passes transaction config into transactions', async () => {
172
- const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
173
-
174
- const firstEntity = await enforceAsyncResult(
175
- PostgresTestEntity.creator(
176
- vc1,
177
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
178
- )
179
- .setField('name', 'hello')
180
- .createAsync()
181
- );
119
+ describe('isolation levels', () => {
120
+ test.each(Object.values(TransactionIsolationLevel))(
121
+ 'isolation level: %p',
122
+ async (isolationLevel: TransactionIsolationLevel) => {
123
+ const vc1 = new ViewerContext(
124
+ createKnexIntegrationTestEntityCompanionProvider(knexInstance),
125
+ );
182
126
 
183
- const loadAndUpdateAsync = async (newName: string): Promise<{ error?: Error }> => {
184
- try {
185
- await vc1.runInTransactionForDatabaseAdaptorFlavorAsync(
186
- 'postgres',
187
- async (queryContext) => {
188
- const entity = await PostgresTestEntity.loader(vc1, queryContext)
189
- .enforcing()
190
- .loadByIDAsync(firstEntity.getID());
191
- await PostgresTestEntity.updater(entity, queryContext)
192
- .setField('name', newName)
193
- .enforceUpdateAsync();
194
- },
195
- { isolationLevel: TransactionIsolationLevel.SERIALIZABLE }
127
+ const firstEntity = await enforceAsyncResult(
128
+ PostgresTestEntity.creator(vc1).setField('name', 'hello').createAsync(),
196
129
  );
197
- return {};
198
- } catch (e) {
199
- return { error: e as Error };
200
- }
201
- };
202
-
203
- // do some parallel updates to trigger serializable error in at least some of them
204
- const results = await Promise.all([
205
- loadAndUpdateAsync('hello2'),
206
- loadAndUpdateAsync('hello3'),
207
- loadAndUpdateAsync('hello4'),
208
- loadAndUpdateAsync('hello5'),
209
- ]);
210
130
 
211
- expect(results.filter((r) => (r.error as any)?.cause?.code === '40001').length > 0).toBe(true);
131
+ const loadAndUpdateAsync = async (
132
+ newName: string,
133
+ delay: number,
134
+ ): Promise<{ error?: Error }> => {
135
+ try {
136
+ await vc1.runInTransactionForDatabaseAdaptorFlavorAsync(
137
+ 'postgres',
138
+ async (queryContext) => {
139
+ const entity = await PostgresTestEntity.loader(vc1, queryContext)
140
+ .enforcing()
141
+ .loadByIDAsync(firstEntity.getID());
142
+ await setTimeout(delay);
143
+ await PostgresTestEntity.updater(entity, queryContext)
144
+ .setField('name', entity.getField('name') + ',' + newName)
145
+ .enforceUpdateAsync();
146
+ },
147
+ { isolationLevel },
148
+ );
149
+ return {};
150
+ } catch (e) {
151
+ return { error: e as Error };
152
+ }
153
+ };
154
+
155
+ // do some parallel updates to trigger serializable error in at least some of them
156
+ const results = await Promise.all([
157
+ loadAndUpdateAsync('hello2', 0),
158
+ loadAndUpdateAsync('hello3', 100),
159
+ loadAndUpdateAsync('hello4', 200),
160
+ loadAndUpdateAsync('hello5', 300),
161
+ ]);
162
+
163
+ if (isolationLevel === TransactionIsolationLevel.READ_COMMITTED) {
164
+ // read committed seems executes the transactions and doesn't produce a consistent result, but doesn't throw
165
+ expect(results.filter((r) => !!r.error).length > 0).toBe(false);
166
+ } else {
167
+ // all other isolation levels throw since they're doing nonrepeatable reads
168
+ expect(results.filter((r) => (r.error as any)?.cause?.code === '40001').length > 0).toBe(
169
+ true,
170
+ );
171
+ }
172
+ },
173
+ );
212
174
  });
213
175
 
214
176
  describe('JSON fields', () => {
@@ -216,13 +178,10 @@ describe('postgres entity integration', () => {
216
178
  const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
217
179
 
218
180
  const entity = await enforceAsyncResult(
219
- PostgresTestEntity.creator(
220
- vc1,
221
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
222
- )
181
+ PostgresTestEntity.creator(vc1)
223
182
  .setField('stringArray', ['hello', 'world'])
224
183
  .setField('jsonArrayField', ['hello', 'world'])
225
- .createAsync()
184
+ .createAsync(),
226
185
  );
227
186
 
228
187
  expect(entity.getField('stringArray')).toEqual(['hello', 'world']);
@@ -233,12 +192,9 @@ describe('postgres entity integration', () => {
233
192
  const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
234
193
 
235
194
  const entity = await enforceAsyncResult(
236
- PostgresTestEntity.creator(
237
- vc1,
238
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
239
- )
195
+ PostgresTestEntity.creator(vc1)
240
196
  .setField('jsonObjectField', { hello: 'world' })
241
- .createAsync()
197
+ .createAsync(),
242
198
  );
243
199
 
244
200
  expect(entity.getField('jsonObjectField')).toEqual({ hello: 'world' });
@@ -248,20 +204,14 @@ describe('postgres entity integration', () => {
248
204
  const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
249
205
 
250
206
  const entity1 = await enforceAsyncResult(
251
- PostgresTestEntity.creator(
252
- vc1,
253
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
254
- )
207
+ PostgresTestEntity.creator(vc1)
255
208
  .setField('maybeJsonArrayField', ['hello', 'world'])
256
- .createAsync()
209
+ .createAsync(),
257
210
  );
258
211
  const entity2 = await enforceAsyncResult(
259
- PostgresTestEntity.creator(
260
- vc1,
261
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
262
- )
212
+ PostgresTestEntity.creator(vc1)
263
213
  .setField('maybeJsonArrayField', { hello: 'world' })
264
- .createAsync()
214
+ .createAsync(),
265
215
  );
266
216
 
267
217
  expect(entity1.getField('maybeJsonArrayField')).toEqual(['hello', 'world']);
@@ -274,32 +224,17 @@ describe('postgres entity integration', () => {
274
224
  const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
275
225
 
276
226
  let entity = await enforceAsyncResult(
277
- PostgresTestEntity.creator(
278
- vc1,
279
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
280
- )
281
- .setField('bigintField', '72057594037928038')
282
- .createAsync()
227
+ PostgresTestEntity.creator(vc1).setField('bigintField', '72057594037928038').createAsync(),
283
228
  );
284
229
  expect(entity.getField('bigintField')).toEqual('72057594037928038');
285
230
 
286
231
  entity = await enforceAsyncResult(
287
- PostgresTestEntity.updater(
288
- entity,
289
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
290
- )
291
- .setField('bigintField', '10')
292
- .updateAsync()
232
+ PostgresTestEntity.updater(entity).setField('bigintField', '10').updateAsync(),
293
233
  );
294
234
  expect(entity.getField('bigintField')).toEqual('10');
295
235
 
296
236
  entity = await enforceAsyncResult(
297
- PostgresTestEntity.updater(
298
- entity,
299
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
300
- )
301
- .setField('bigintField', '-10')
302
- .updateAsync()
237
+ PostgresTestEntity.updater(entity).setField('bigintField', '-10').updateAsync(),
303
238
  );
304
239
  expect(entity.getField('bigintField')).toEqual('-10');
305
240
  });
@@ -310,42 +245,30 @@ describe('postgres entity integration', () => {
310
245
  const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
311
246
 
312
247
  await enforceAsyncResult(
313
- PostgresTestEntity.creator(
314
- vc1,
315
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
316
- )
248
+ PostgresTestEntity.creator(vc1)
317
249
  .setField('name', 'hello')
318
250
  .setField('hasACat', false)
319
251
  .setField('hasADog', true)
320
- .createAsync()
252
+ .createAsync(),
321
253
  );
322
254
 
323
255
  await enforceAsyncResult(
324
- PostgresTestEntity.creator(
325
- vc1,
326
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
327
- )
256
+ PostgresTestEntity.creator(vc1)
328
257
  .setField('name', 'world')
329
258
  .setField('hasACat', false)
330
259
  .setField('hasADog', true)
331
- .createAsync()
260
+ .createAsync(),
332
261
  );
333
262
 
334
263
  await enforceAsyncResult(
335
- PostgresTestEntity.creator(
336
- vc1,
337
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
338
- )
264
+ PostgresTestEntity.creator(vc1)
339
265
  .setField('name', 'wat')
340
266
  .setField('hasACat', false)
341
267
  .setField('hasADog', false)
342
- .createAsync()
268
+ .createAsync(),
343
269
  );
344
270
 
345
- const results = await PostgresTestEntity.loader(
346
- vc1,
347
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
348
- )
271
+ const results = await PostgresTestEntity.loader(vc1)
349
272
  .enforcing()
350
273
  .loadManyByFieldEqualityConjunctionAsync([
351
274
  {
@@ -360,10 +283,7 @@ describe('postgres entity integration', () => {
360
283
 
361
284
  expect(results).toHaveLength(2);
362
285
 
363
- const results2 = await PostgresTestEntity.loader(
364
- vc1,
365
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
366
- )
286
+ const results2 = await PostgresTestEntity.loader(vc1)
367
287
  .enforcing()
368
288
  .loadManyByFieldEqualityConjunctionAsync([
369
289
  { fieldName: 'hasADog', fieldValues: [true, false] },
@@ -374,37 +294,13 @@ describe('postgres entity integration', () => {
374
294
  it('supports query modifiers', async () => {
375
295
  const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
376
296
 
377
- await enforceAsyncResult(
378
- PostgresTestEntity.creator(
379
- vc1,
380
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
381
- )
382
- .setField('name', 'a')
383
- .createAsync()
384
- );
297
+ await enforceAsyncResult(PostgresTestEntity.creator(vc1).setField('name', 'a').createAsync());
385
298
 
386
- await enforceAsyncResult(
387
- PostgresTestEntity.creator(
388
- vc1,
389
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
390
- )
391
- .setField('name', 'b')
392
- .createAsync()
393
- );
299
+ await enforceAsyncResult(PostgresTestEntity.creator(vc1).setField('name', 'b').createAsync());
394
300
 
395
- await enforceAsyncResult(
396
- PostgresTestEntity.creator(
397
- vc1,
398
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
399
- )
400
- .setField('name', 'c')
401
- .createAsync()
402
- );
301
+ await enforceAsyncResult(PostgresTestEntity.creator(vc1).setField('name', 'c').createAsync());
403
302
 
404
- const results = await PostgresTestEntity.loader(
405
- vc1,
406
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
407
- )
303
+ const results = await PostgresTestEntity.loader(vc1)
408
304
  .enforcing()
409
305
  .loadManyByFieldEqualityConjunctionAsync([], {
410
306
  limit: 2,
@@ -423,55 +319,37 @@ describe('postgres entity integration', () => {
423
319
  it('supports null field values', async () => {
424
320
  const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
425
321
  await enforceAsyncResult(
426
- PostgresTestEntity.creator(
427
- vc1,
428
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
429
- )
322
+ PostgresTestEntity.creator(vc1)
430
323
  .setField('name', 'a')
431
324
  .setField('hasADog', true)
432
- .createAsync()
325
+ .createAsync(),
433
326
  );
434
327
  await enforceAsyncResult(
435
- PostgresTestEntity.creator(
436
- vc1,
437
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
438
- )
328
+ PostgresTestEntity.creator(vc1)
439
329
  .setField('name', 'b')
440
330
  .setField('hasADog', true)
441
- .createAsync()
331
+ .createAsync(),
442
332
  );
443
333
  await enforceAsyncResult(
444
- PostgresTestEntity.creator(
445
- vc1,
446
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
447
- )
334
+ PostgresTestEntity.creator(vc1)
448
335
  .setField('name', null)
449
336
  .setField('hasADog', true)
450
- .createAsync()
337
+ .createAsync(),
451
338
  );
452
339
  await enforceAsyncResult(
453
- PostgresTestEntity.creator(
454
- vc1,
455
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
456
- )
340
+ PostgresTestEntity.creator(vc1)
457
341
  .setField('name', null)
458
342
  .setField('hasADog', false)
459
- .createAsync()
343
+ .createAsync(),
460
344
  );
461
345
 
462
- const results = await PostgresTestEntity.loader(
463
- vc1,
464
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
465
- )
346
+ const results = await PostgresTestEntity.loader(vc1)
466
347
  .enforcing()
467
348
  .loadManyByFieldEqualityConjunctionAsync([{ fieldName: 'name', fieldValue: null }]);
468
349
  expect(results).toHaveLength(2);
469
350
  expect(results[0]!.getField('name')).toBeNull();
470
351
 
471
- const results2 = await PostgresTestEntity.loader(
472
- vc1,
473
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
474
- )
352
+ const results2 = await PostgresTestEntity.loader(vc1)
475
353
  .enforcing()
476
354
  .loadManyByFieldEqualityConjunctionAsync(
477
355
  [
@@ -485,7 +363,7 @@ describe('postgres entity integration', () => {
485
363
  order: OrderByOrdering.DESCENDING,
486
364
  },
487
365
  ],
488
- }
366
+ },
489
367
  );
490
368
  expect(results2).toHaveLength(2);
491
369
  expect(results2.map((e) => e.getField('name'))).toEqual([null, 'a']);
@@ -496,20 +374,14 @@ describe('postgres entity integration', () => {
496
374
  it('loads by raw where clause', async () => {
497
375
  const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
498
376
  await enforceAsyncResult(
499
- PostgresTestEntity.creator(
500
- vc1,
501
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
502
- )
377
+ PostgresTestEntity.creator(vc1)
503
378
  .setField('name', 'hello')
504
379
  .setField('hasACat', false)
505
380
  .setField('hasADog', true)
506
- .createAsync()
381
+ .createAsync(),
507
382
  );
508
383
 
509
- const results = await PostgresTestEntity.loader(
510
- vc1,
511
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
512
- )
384
+ const results = await PostgresTestEntity.loader(vc1)
513
385
  .enforcing()
514
386
  .loadManyByRawWhereClauseAsync('name = ?', ['hello']);
515
387
 
@@ -519,23 +391,17 @@ describe('postgres entity integration', () => {
519
391
  it('throws with invalid where clause', async () => {
520
392
  const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
521
393
  await enforceAsyncResult(
522
- PostgresTestEntity.creator(
523
- vc1,
524
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
525
- )
394
+ PostgresTestEntity.creator(vc1)
526
395
  .setField('name', 'hello')
527
396
  .setField('hasACat', false)
528
397
  .setField('hasADog', true)
529
- .createAsync()
398
+ .createAsync(),
530
399
  );
531
400
 
532
401
  await expect(
533
- PostgresTestEntity.loader(
534
- vc1,
535
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
536
- )
402
+ PostgresTestEntity.loader(vc1)
537
403
  .enforcing()
538
- .loadManyByRawWhereClauseAsync('invalid_column = ?', ['hello'])
404
+ .loadManyByRawWhereClauseAsync('invalid_column = ?', ['hello']),
539
405
  ).rejects.toThrow();
540
406
  });
541
407
 
@@ -543,39 +409,27 @@ describe('postgres entity integration', () => {
543
409
  const vc1 = new ViewerContext(createKnexIntegrationTestEntityCompanionProvider(knexInstance));
544
410
 
545
411
  await enforceAsyncResult(
546
- PostgresTestEntity.creator(
547
- vc1,
548
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
549
- )
412
+ PostgresTestEntity.creator(vc1)
550
413
  .setField('name', 'a')
551
414
  .setField('hasADog', true)
552
- .createAsync()
415
+ .createAsync(),
553
416
  );
554
417
 
555
418
  await enforceAsyncResult(
556
- PostgresTestEntity.creator(
557
- vc1,
558
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
559
- )
419
+ PostgresTestEntity.creator(vc1)
560
420
  .setField('name', 'b')
561
421
  .setField('hasADog', true)
562
- .createAsync()
422
+ .createAsync(),
563
423
  );
564
424
 
565
425
  await enforceAsyncResult(
566
- PostgresTestEntity.creator(
567
- vc1,
568
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
569
- )
426
+ PostgresTestEntity.creator(vc1)
570
427
  .setField('name', 'c')
571
428
  .setField('hasADog', true)
572
- .createAsync()
429
+ .createAsync(),
573
430
  );
574
431
 
575
- const results = await PostgresTestEntity.loader(
576
- vc1,
577
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
578
- )
432
+ const results = await PostgresTestEntity.loader(vc1)
579
433
  .enforcing()
580
434
  .loadManyByRawWhereClauseAsync('has_a_dog = ?', [true], {
581
435
  limit: 2,
@@ -591,10 +445,7 @@ describe('postgres entity integration', () => {
591
445
  expect(results).toHaveLength(2);
592
446
  expect(results.map((e) => e.getField('name'))).toEqual(['b', 'c']);
593
447
 
594
- const resultsMultipleOrderBy = await PostgresTestEntity.loader(
595
- vc1,
596
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
597
- )
448
+ const resultsMultipleOrderBy = await PostgresTestEntity.loader(vc1)
598
449
  .enforcing()
599
450
  .loadManyByRawWhereClauseAsync('has_a_dog = ?', [true], {
600
451
  orderBy: [
@@ -612,10 +463,7 @@ describe('postgres entity integration', () => {
612
463
  expect(resultsMultipleOrderBy).toHaveLength(3);
613
464
  expect(resultsMultipleOrderBy.map((e) => e.getField('name'))).toEqual(['c', 'b', 'a']);
614
465
 
615
- const resultsOrderByRaw = await PostgresTestEntity.loader(
616
- vc1,
617
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
618
- )
466
+ const resultsOrderByRaw = await PostgresTestEntity.loader(vc1)
619
467
  .enforcing()
620
468
  .loadManyByRawWhereClauseAsync('has_a_dog = ?', [true], {
621
469
  orderByRaw: 'has_a_dog ASC, name DESC',
@@ -630,92 +478,58 @@ describe('postgres entity integration', () => {
630
478
  describe('create', () => {
631
479
  it('rolls back transaction when trigger throws except afterCommit', async () => {
632
480
  const vc1 = new ViewerContext(
633
- createKnexIntegrationTestEntityCompanionProvider(knexInstance)
481
+ createKnexIntegrationTestEntityCompanionProvider(knexInstance),
634
482
  );
635
483
 
636
484
  await expect(
637
- PostgresTriggerTestEntity.creator(
638
- vc1,
639
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
640
- )
485
+ PostgresTriggerTestEntity.creator(vc1)
641
486
  .setField('name', 'beforeCreate')
642
- .enforceCreateAsync()
487
+ .enforceCreateAsync(),
643
488
  ).rejects.toThrowError('name cannot have value beforeCreate');
644
489
  await expect(
645
- PostgresTriggerTestEntity.loader(
646
- vc1,
647
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
648
- )
490
+ PostgresTriggerTestEntity.loader(vc1)
649
491
  .enforcing()
650
- .loadByFieldEqualingAsync('name', 'beforeCreate')
492
+ .loadByFieldEqualingAsync('name', 'beforeCreate'),
651
493
  ).resolves.toBeNull();
652
494
 
653
495
  await expect(
654
- PostgresTriggerTestEntity.creator(
655
- vc1,
656
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
657
- )
496
+ PostgresTriggerTestEntity.creator(vc1)
658
497
  .setField('name', 'afterCreate')
659
- .enforceCreateAsync()
498
+ .enforceCreateAsync(),
660
499
  ).rejects.toThrowError('name cannot have value afterCreate');
661
500
  await expect(
662
- PostgresTriggerTestEntity.loader(
663
- vc1,
664
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
665
- )
501
+ PostgresTriggerTestEntity.loader(vc1)
666
502
  .enforcing()
667
- .loadByFieldEqualingAsync('name', 'afterCreate')
503
+ .loadByFieldEqualingAsync('name', 'afterCreate'),
668
504
  ).resolves.toBeNull();
669
505
 
670
506
  await expect(
671
- PostgresTriggerTestEntity.creator(
672
- vc1,
673
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
674
- )
675
- .setField('name', 'beforeAll')
676
- .enforceCreateAsync()
507
+ PostgresTriggerTestEntity.creator(vc1).setField('name', 'beforeAll').enforceCreateAsync(),
677
508
  ).rejects.toThrowError('name cannot have value beforeAll');
678
509
  await expect(
679
- PostgresTriggerTestEntity.loader(
680
- vc1,
681
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
682
- )
510
+ PostgresTriggerTestEntity.loader(vc1)
683
511
  .enforcing()
684
- .loadByFieldEqualingAsync('name', 'beforeAll')
512
+ .loadByFieldEqualingAsync('name', 'beforeAll'),
685
513
  ).resolves.toBeNull();
686
514
 
687
515
  await expect(
688
- PostgresTriggerTestEntity.creator(
689
- vc1,
690
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
691
- )
692
- .setField('name', 'afterAll')
693
- .enforceCreateAsync()
516
+ PostgresTriggerTestEntity.creator(vc1).setField('name', 'afterAll').enforceCreateAsync(),
694
517
  ).rejects.toThrowError('name cannot have value afterAll');
695
518
  await expect(
696
- PostgresTriggerTestEntity.loader(
697
- vc1,
698
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
699
- )
519
+ PostgresTriggerTestEntity.loader(vc1)
700
520
  .enforcing()
701
- .loadByFieldEqualingAsync('name', 'afterAll')
521
+ .loadByFieldEqualingAsync('name', 'afterAll'),
702
522
  ).resolves.toBeNull();
703
523
 
704
524
  await expect(
705
- PostgresTriggerTestEntity.creator(
706
- vc1,
707
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
708
- )
525
+ PostgresTriggerTestEntity.creator(vc1)
709
526
  .setField('name', 'afterCommit')
710
- .enforceCreateAsync()
527
+ .enforceCreateAsync(),
711
528
  ).rejects.toThrowError('name cannot have value afterCommit');
712
529
  await expect(
713
- PostgresTriggerTestEntity.loader(
714
- vc1,
715
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
716
- )
530
+ PostgresTriggerTestEntity.loader(vc1)
717
531
  .enforcing()
718
- .loadByFieldEqualingAsync('name', 'afterCommit')
532
+ .loadByFieldEqualingAsync('name', 'afterCommit'),
719
533
  ).resolves.not.toBeNull();
720
534
  });
721
535
  });
@@ -723,99 +537,66 @@ describe('postgres entity integration', () => {
723
537
  describe('update', () => {
724
538
  it('rolls back transaction when trigger throws except afterCommit', async () => {
725
539
  const vc1 = new ViewerContext(
726
- createKnexIntegrationTestEntityCompanionProvider(knexInstance)
540
+ createKnexIntegrationTestEntityCompanionProvider(knexInstance),
727
541
  );
728
542
 
729
- const entity = await PostgresTriggerTestEntity.creator(
730
- vc1,
731
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
732
- )
543
+ const entity = await PostgresTriggerTestEntity.creator(vc1)
733
544
  .setField('name', 'blah')
734
545
  .enforceCreateAsync();
735
546
 
736
547
  await expect(
737
- PostgresTriggerTestEntity.updater(
738
- entity,
739
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
740
- )
548
+ PostgresTriggerTestEntity.updater(entity)
741
549
  .setField('name', 'beforeUpdate')
742
- .enforceUpdateAsync()
550
+ .enforceUpdateAsync(),
743
551
  ).rejects.toThrowError('name cannot have value beforeUpdate');
744
552
  await expect(
745
- PostgresTriggerTestEntity.loader(
746
- vc1,
747
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
748
- )
553
+ PostgresTriggerTestEntity.loader(vc1)
749
554
  .enforcing()
750
- .loadByFieldEqualingAsync('name', 'beforeUpdate')
555
+ .loadByFieldEqualingAsync('name', 'beforeUpdate'),
751
556
  ).resolves.toBeNull();
752
557
 
753
558
  await expect(
754
- PostgresTriggerTestEntity.updater(
755
- entity,
756
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
757
- )
559
+ PostgresTriggerTestEntity.updater(entity)
758
560
  .setField('name', 'afterUpdate')
759
- .enforceUpdateAsync()
561
+ .enforceUpdateAsync(),
760
562
  ).rejects.toThrowError('name cannot have value afterUpdate');
761
563
  await expect(
762
- PostgresTriggerTestEntity.loader(
763
- vc1,
764
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
765
- )
564
+ PostgresTriggerTestEntity.loader(vc1)
766
565
  .enforcing()
767
- .loadByFieldEqualingAsync('name', 'afterUpdate')
566
+ .loadByFieldEqualingAsync('name', 'afterUpdate'),
768
567
  ).resolves.toBeNull();
769
568
 
770
569
  await expect(
771
- PostgresTriggerTestEntity.updater(
772
- entity,
773
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
774
- )
570
+ PostgresTriggerTestEntity.updater(entity)
775
571
  .setField('name', 'beforeAll')
776
- .enforceUpdateAsync()
572
+ .enforceUpdateAsync(),
777
573
  ).rejects.toThrowError('name cannot have value beforeAll');
778
574
  await expect(
779
- PostgresTriggerTestEntity.loader(
780
- vc1,
781
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
782
- )
575
+ PostgresTriggerTestEntity.loader(vc1)
783
576
  .enforcing()
784
- .loadByFieldEqualingAsync('name', 'beforeAll')
577
+ .loadByFieldEqualingAsync('name', 'beforeAll'),
785
578
  ).resolves.toBeNull();
786
579
 
787
580
  await expect(
788
- PostgresTriggerTestEntity.updater(
789
- entity,
790
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
791
- )
581
+ PostgresTriggerTestEntity.updater(entity)
792
582
  .setField('name', 'afterAll')
793
- .enforceUpdateAsync()
583
+ .enforceUpdateAsync(),
794
584
  ).rejects.toThrowError('name cannot have value afterAll');
795
585
  await expect(
796
- PostgresTriggerTestEntity.loader(
797
- vc1,
798
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
799
- )
586
+ PostgresTriggerTestEntity.loader(vc1)
800
587
  .enforcing()
801
- .loadByFieldEqualingAsync('name', 'afterAll')
588
+ .loadByFieldEqualingAsync('name', 'afterAll'),
802
589
  ).resolves.toBeNull();
803
590
 
804
591
  await expect(
805
- PostgresTriggerTestEntity.updater(
806
- entity,
807
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
808
- )
592
+ PostgresTriggerTestEntity.updater(entity)
809
593
  .setField('name', 'afterCommit')
810
- .enforceUpdateAsync()
594
+ .enforceUpdateAsync(),
811
595
  ).rejects.toThrowError('name cannot have value afterCommit');
812
596
  await expect(
813
- PostgresTriggerTestEntity.loader(
814
- vc1,
815
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
816
- )
597
+ PostgresTriggerTestEntity.loader(vc1)
817
598
  .enforcing()
818
- .loadByFieldEqualingAsync('name', 'afterCommit')
599
+ .loadByFieldEqualingAsync('name', 'afterCommit'),
819
600
  ).resolves.not.toBeNull();
820
601
  });
821
602
  });
@@ -823,49 +604,31 @@ describe('postgres entity integration', () => {
823
604
  describe('delete', () => {
824
605
  it('rolls back transaction when trigger throws except afterCommit', async () => {
825
606
  const vc1 = new ViewerContext(
826
- createKnexIntegrationTestEntityCompanionProvider(knexInstance)
607
+ createKnexIntegrationTestEntityCompanionProvider(knexInstance),
827
608
  );
828
609
 
829
- const entityBeforeDelete = await PostgresTriggerTestEntity.creator(
830
- vc1,
831
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
832
- )
610
+ const entityBeforeDelete = await PostgresTriggerTestEntity.creator(vc1)
833
611
  .setField('name', 'beforeDelete')
834
612
  .enforceCreateAsync();
835
613
  await expect(
836
- PostgresTriggerTestEntity.enforceDeleteAsync(
837
- entityBeforeDelete,
838
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
839
- )
614
+ PostgresTriggerTestEntity.enforceDeleteAsync(entityBeforeDelete),
840
615
  ).rejects.toThrowError('name cannot have value beforeDelete');
841
616
  await expect(
842
- PostgresTriggerTestEntity.loader(
843
- vc1,
844
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
845
- )
617
+ PostgresTriggerTestEntity.loader(vc1)
846
618
  .enforcing()
847
- .loadByFieldEqualingAsync('name', 'beforeDelete')
619
+ .loadByFieldEqualingAsync('name', 'beforeDelete'),
848
620
  ).resolves.not.toBeNull();
849
621
 
850
- const entityAfterDelete = await PostgresTriggerTestEntity.creator(
851
- vc1,
852
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
853
- )
622
+ const entityAfterDelete = await PostgresTriggerTestEntity.creator(vc1)
854
623
  .setField('name', 'afterDelete')
855
624
  .enforceCreateAsync();
856
625
  await expect(
857
- PostgresTriggerTestEntity.enforceDeleteAsync(
858
- entityAfterDelete,
859
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
860
- )
626
+ PostgresTriggerTestEntity.enforceDeleteAsync(entityAfterDelete),
861
627
  ).rejects.toThrowError('name cannot have value afterDelete');
862
628
  await expect(
863
- PostgresTriggerTestEntity.loader(
864
- vc1,
865
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
866
- )
629
+ PostgresTriggerTestEntity.loader(vc1)
867
630
  .enforcing()
868
- .loadByFieldEqualingAsync('name', 'afterDelete')
631
+ .loadByFieldEqualingAsync('name', 'afterDelete'),
869
632
  ).resolves.not.toBeNull();
870
633
  });
871
634
  });
@@ -873,81 +636,57 @@ describe('postgres entity integration', () => {
873
636
  describe('create', () => {
874
637
  it('rolls back transaction when trigger throws ', async () => {
875
638
  const vc1 = new ViewerContext(
876
- createKnexIntegrationTestEntityCompanionProvider(knexInstance)
639
+ createKnexIntegrationTestEntityCompanionProvider(knexInstance),
877
640
  );
878
641
 
879
642
  await expect(
880
- PostgresValidatorTestEntity.creator(
881
- vc1,
882
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
883
- )
643
+ PostgresValidatorTestEntity.creator(vc1)
884
644
  .setField('name', 'beforeCreateAndBeforeUpdate')
885
- .enforceCreateAsync()
645
+ .enforceCreateAsync(),
886
646
  ).rejects.toThrowError('name cannot have value beforeCreateAndBeforeUpdate');
887
647
  await expect(
888
- PostgresValidatorTestEntity.loader(
889
- vc1,
890
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
891
- )
648
+ PostgresValidatorTestEntity.loader(vc1)
892
649
  .enforcing()
893
- .loadByFieldEqualingAsync('name', 'beforeCreateAndBeforeUpdate')
650
+ .loadByFieldEqualingAsync('name', 'beforeCreateAndBeforeUpdate'),
894
651
  ).resolves.toBeNull();
895
652
  });
896
653
  });
897
654
  describe('update', () => {
898
655
  it('rolls back transaction when trigger throws ', async () => {
899
656
  const vc1 = new ViewerContext(
900
- createKnexIntegrationTestEntityCompanionProvider(knexInstance)
657
+ createKnexIntegrationTestEntityCompanionProvider(knexInstance),
901
658
  );
902
659
 
903
- const entity = await PostgresValidatorTestEntity.creator(
904
- vc1,
905
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
906
- )
660
+ const entity = await PostgresValidatorTestEntity.creator(vc1)
907
661
  .setField('name', 'blah')
908
662
  .enforceCreateAsync();
909
663
 
910
664
  await expect(
911
- PostgresValidatorTestEntity.updater(
912
- entity,
913
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
914
- )
665
+ PostgresValidatorTestEntity.updater(entity)
915
666
  .setField('name', 'beforeCreateAndBeforeUpdate')
916
- .enforceUpdateAsync()
667
+ .enforceUpdateAsync(),
917
668
  ).rejects.toThrowError('name cannot have value beforeCreateAndBeforeUpdate');
918
669
  await expect(
919
- PostgresValidatorTestEntity.loader(
920
- vc1,
921
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
922
- )
670
+ PostgresValidatorTestEntity.loader(vc1)
923
671
  .enforcing()
924
- .loadByFieldEqualingAsync('name', 'beforeCreateAndBeforeUpdate')
672
+ .loadByFieldEqualingAsync('name', 'beforeCreateAndBeforeUpdate'),
925
673
  ).resolves.toBeNull();
926
674
  });
927
675
  });
928
676
  describe('delete', () => {
929
677
  it('validation should not run on a delete mutation', async () => {
930
678
  const vc1 = new ViewerContext(
931
- createKnexIntegrationTestEntityCompanionProvider(knexInstance)
679
+ createKnexIntegrationTestEntityCompanionProvider(knexInstance),
932
680
  );
933
681
 
934
- const entityToDelete = await PostgresValidatorTestEntity.creator(
935
- vc1,
936
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
937
- )
682
+ const entityToDelete = await PostgresValidatorTestEntity.creator(vc1)
938
683
  .setField('name', 'shouldBeDeleted')
939
684
  .enforceCreateAsync();
940
- await PostgresValidatorTestEntity.enforceDeleteAsync(
941
- entityToDelete,
942
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
943
- );
685
+ await PostgresValidatorTestEntity.enforceDeleteAsync(entityToDelete);
944
686
  await expect(
945
- PostgresValidatorTestEntity.loader(
946
- vc1,
947
- vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
948
- )
687
+ PostgresValidatorTestEntity.loader(vc1)
949
688
  .enforcing()
950
- .loadByFieldEqualingAsync('name', 'shouldBeDeleted')
689
+ .loadByFieldEqualingAsync('name', 'shouldBeDeleted'),
951
690
  ).resolves.toBeNull();
952
691
  });
953
692
  });
@@ -1002,7 +741,7 @@ describe('postgres entity integration', () => {
1002
741
  preCommitCallCount++;
1003
742
  throw Error('wat');
1004
743
  }, 0);
1005
- })
744
+ }),
1006
745
  ).rejects.toThrowError('wat');
1007
746
 
1008
747
  expect(preCommitCallCount).toBe(2);