@expo/entity 0.34.0 → 0.35.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 (82) hide show
  1. package/build/Entity.d.ts +6 -6
  2. package/build/Entity.js +29 -6
  3. package/build/Entity.js.map +1 -1
  4. package/build/EntityAssociationLoader.d.ts +8 -8
  5. package/build/EntityAssociationLoader.js +20 -4
  6. package/build/EntityAssociationLoader.js.map +1 -1
  7. package/build/EntityQueryContextProvider.d.ts +1 -1
  8. package/build/EntityQueryContextProvider.js +1 -1
  9. package/build/EntityQueryContextProvider.js.map +1 -1
  10. package/build/ReadonlyEntity.d.ts +1 -1
  11. package/build/ReadonlyEntity.js +4 -1
  12. package/build/ReadonlyEntity.js.map +1 -1
  13. package/build/ViewerContext.d.ts +2 -2
  14. package/build/ViewerContext.js +3 -3
  15. package/build/ViewerContext.js.map +1 -1
  16. package/build/__tests__/Entity-test.js +13 -13
  17. package/build/__tests__/Entity-test.js.map +1 -1
  18. package/build/__tests__/EntityAssociationLoader-test.js +37 -69
  19. package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
  20. package/build/__tests__/EntityCommonUseCases-test.js +11 -19
  21. package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
  22. package/build/__tests__/EntityEdges-test.js +40 -72
  23. package/build/__tests__/EntityEdges-test.js.map +1 -1
  24. package/build/__tests__/EntityLoader-constructor-test.js +1 -1
  25. package/build/__tests__/EntityLoader-constructor-test.js.map +1 -1
  26. package/build/__tests__/EntityLoader-test.js +19 -19
  27. package/build/__tests__/EntityLoader-test.js.map +1 -1
  28. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +6 -6
  29. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -1
  30. package/build/__tests__/EntityMutator-test.js +20 -20
  31. package/build/__tests__/EntityMutator-test.js.map +1 -1
  32. package/build/__tests__/EntitySecondaryCacheLoader-test.js +10 -10
  33. package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
  34. package/build/__tests__/EntitySelfReferentialEdges-test.js +47 -79
  35. package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
  36. package/build/__tests__/ReadonlyEntity-test.js +13 -13
  37. package/build/__tests__/ReadonlyEntity-test.js.map +1 -1
  38. package/build/__tests__/ViewerContext-test.js +2 -2
  39. package/build/__tests__/ViewerContext-test.js.map +1 -1
  40. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +8 -12
  41. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
  42. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +13 -15
  43. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +1 -1
  44. package/build/internal/EntityDataManager.js +1 -1
  45. package/build/internal/EntityDataManager.js.map +1 -1
  46. package/build/internal/__tests__/EntityDataManager-test.js +11 -11
  47. package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
  48. package/build/testfixtures/SimpleTestEntity.d.ts +8 -8
  49. package/build/testfixtures/SimpleTestEntity.js.map +1 -1
  50. package/build/testfixtures/TestEntity.d.ts +12 -12
  51. package/build/testfixtures/TestEntity.js.map +1 -1
  52. package/build/testfixtures/TestEntity2.d.ts +8 -8
  53. package/build/testfixtures/TestEntity2.js.map +1 -1
  54. package/build/testfixtures/TestViewerContext.d.ts +0 -3
  55. package/build/testfixtures/TestViewerContext.js +0 -6
  56. package/build/testfixtures/TestViewerContext.js.map +1 -1
  57. package/package.json +2 -2
  58. package/src/Entity.ts +29 -6
  59. package/src/EntityAssociationLoader.ts +25 -9
  60. package/src/EntityQueryContextProvider.ts +1 -1
  61. package/src/ReadonlyEntity.ts +4 -1
  62. package/src/ViewerContext.ts +5 -5
  63. package/src/__tests__/Entity-test.ts +27 -43
  64. package/src/__tests__/EntityAssociationLoader-test.ts +86 -168
  65. package/src/__tests__/EntityCommonUseCases-test.ts +18 -36
  66. package/src/__tests__/EntityEdges-test.ts +40 -102
  67. package/src/__tests__/EntityLoader-constructor-test.ts +1 -1
  68. package/src/__tests__/EntityLoader-test.ts +19 -19
  69. package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +16 -19
  70. package/src/__tests__/EntityMutator-test.ts +61 -67
  71. package/src/__tests__/EntitySecondaryCacheLoader-test.ts +11 -20
  72. package/src/__tests__/EntitySelfReferentialEdges-test.ts +47 -115
  73. package/src/__tests__/ReadonlyEntity-test.ts +13 -15
  74. package/src/__tests__/ViewerContext-test.ts +2 -3
  75. package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +22 -33
  76. package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +22 -30
  77. package/src/internal/EntityDataManager.ts +1 -1
  78. package/src/internal/__tests__/EntityDataManager-test.ts +11 -11
  79. package/src/testfixtures/SimpleTestEntity.ts +8 -8
  80. package/src/testfixtures/TestEntity.ts +12 -15
  81. package/src/testfixtures/TestEntity2.ts +8 -8
  82. package/src/testfixtures/TestViewerContext.ts +1 -12
@@ -87,52 +87,34 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE', () => {
87
87
  const companionProvider = createUnitTestEntityCompanionProvider();
88
88
  const viewerContext = new TestViewerContext(companionProvider);
89
89
 
90
- const parentCategory = await CategoryEntity.creator(
91
- viewerContext,
92
- viewerContext.getQueryContext()
93
- ).enforceCreateAsync();
94
- const subCategory = await CategoryEntity.creator(viewerContext, viewerContext.getQueryContext())
90
+ const parentCategory = await CategoryEntity.creator(viewerContext).enforceCreateAsync();
91
+ const subCategory = await CategoryEntity.creator(viewerContext)
95
92
  .setField('parent_category_id', parentCategory.getID())
96
93
  .enforceCreateAsync();
97
- const subSubCategory = await CategoryEntity.creator(
98
- viewerContext,
99
- viewerContext.getQueryContext()
100
- )
94
+ const subSubCategory = await CategoryEntity.creator(viewerContext)
101
95
  .setField('parent_category_id', subCategory.getID())
102
96
  .enforceCreateAsync();
103
97
 
104
98
  await expect(
105
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
106
- .enforcing()
107
- .loadByIDNullableAsync(parentCategory.getID())
99
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parentCategory.getID())
108
100
  ).resolves.not.toBeNull();
109
101
  await expect(
110
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
111
- .enforcing()
112
- .loadByIDNullableAsync(subCategory.getID())
102
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(subCategory.getID())
113
103
  ).resolves.not.toBeNull();
114
104
  await expect(
115
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
116
- .enforcing()
117
- .loadByIDNullableAsync(subSubCategory.getID())
105
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(subSubCategory.getID())
118
106
  ).resolves.not.toBeNull();
119
107
 
120
- await CategoryEntity.enforceDeleteAsync(parentCategory, viewerContext.getQueryContext());
108
+ await CategoryEntity.enforceDeleteAsync(parentCategory);
121
109
 
122
110
  await expect(
123
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
124
- .enforcing()
125
- .loadByIDNullableAsync(parentCategory.getID())
111
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parentCategory.getID())
126
112
  ).resolves.toBeNull();
127
113
  await expect(
128
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
129
- .enforcing()
130
- .loadByIDNullableAsync(subCategory.getID())
114
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(subCategory.getID())
131
115
  ).resolves.toBeNull();
132
116
  await expect(
133
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
134
- .enforcing()
135
- .loadByIDNullableAsync(subSubCategory.getID())
117
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(subSubCategory.getID())
136
118
  ).resolves.toBeNull();
137
119
  });
138
120
 
@@ -142,28 +124,21 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE', () => {
142
124
  const companionProvider = createUnitTestEntityCompanionProvider();
143
125
  const viewerContext = new TestViewerContext(companionProvider);
144
126
 
145
- const categoryA = await CategoryEntity.creator(
146
- viewerContext,
147
- viewerContext.getQueryContext()
148
- ).enforceCreateAsync();
149
- const categoryB = await CategoryEntity.creator(viewerContext, viewerContext.getQueryContext())
127
+ const categoryA = await CategoryEntity.creator(viewerContext).enforceCreateAsync();
128
+ const categoryB = await CategoryEntity.creator(viewerContext)
150
129
  .setField('parent_category_id', categoryA.getID())
151
130
  .enforceCreateAsync();
152
- await CategoryEntity.updater(categoryA, viewerContext.getQueryContext())
131
+ await CategoryEntity.updater(categoryA)
153
132
  .setField('parent_category_id', categoryB.getID())
154
133
  .enforceUpdateAsync();
155
134
 
156
- await CategoryEntity.enforceDeleteAsync(categoryA, viewerContext.getQueryContext());
135
+ await CategoryEntity.enforceDeleteAsync(categoryA);
157
136
 
158
137
  await expect(
159
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
160
- .enforcing()
161
- .loadByIDNullableAsync(categoryA.getID())
138
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(categoryA.getID())
162
139
  ).resolves.toBeNull();
163
140
  await expect(
164
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
165
- .enforcing()
166
- .loadByIDNullableAsync(categoryB.getID())
141
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(categoryB.getID())
167
142
  ).resolves.toBeNull();
168
143
  });
169
144
  });
@@ -175,56 +150,36 @@ describe('EntityEdgeDeletionBehavior.SET_NULL', () => {
175
150
  const companionProvider = createUnitTestEntityCompanionProvider();
176
151
  const viewerContext = new TestViewerContext(companionProvider);
177
152
 
178
- const parentCategory = await CategoryEntity.creator(
179
- viewerContext,
180
- viewerContext.getQueryContext()
181
- ).enforceCreateAsync();
182
- const subCategory = await CategoryEntity.creator(viewerContext, viewerContext.getQueryContext())
153
+ const parentCategory = await CategoryEntity.creator(viewerContext).enforceCreateAsync();
154
+ const subCategory = await CategoryEntity.creator(viewerContext)
183
155
  .setField('parent_category_id', parentCategory.getID())
184
156
  .enforceCreateAsync();
185
- const subSubCategory = await CategoryEntity.creator(
186
- viewerContext,
187
- viewerContext.getQueryContext()
188
- )
157
+ const subSubCategory = await CategoryEntity.creator(viewerContext)
189
158
  .setField('parent_category_id', subCategory.getID())
190
159
  .enforceCreateAsync();
191
160
 
192
161
  await expect(
193
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
194
- .enforcing()
195
- .loadByIDNullableAsync(parentCategory.getID())
162
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parentCategory.getID())
196
163
  ).resolves.not.toBeNull();
197
164
  await expect(
198
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
199
- .enforcing()
200
- .loadByIDNullableAsync(subCategory.getID())
165
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(subCategory.getID())
201
166
  ).resolves.not.toBeNull();
202
167
  await expect(
203
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
204
- .enforcing()
205
- .loadByIDNullableAsync(subSubCategory.getID())
168
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(subSubCategory.getID())
206
169
  ).resolves.not.toBeNull();
207
170
 
208
- await CategoryEntity.enforceDeleteAsync(parentCategory, viewerContext.getQueryContext());
171
+ await CategoryEntity.enforceDeleteAsync(parentCategory);
209
172
 
210
173
  await expect(
211
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
212
- .enforcing()
213
- .loadByIDNullableAsync(parentCategory.getID())
174
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parentCategory.getID())
214
175
  ).resolves.toBeNull();
215
176
 
216
- const loadedSubCategory = await CategoryEntity.loader(
217
- viewerContext,
218
- viewerContext.getQueryContext()
219
- )
177
+ const loadedSubCategory = await CategoryEntity.loader(viewerContext)
220
178
  .enforcing()
221
179
  .loadByIDAsync(subCategory.getID());
222
180
  expect(loadedSubCategory.getField('parent_category_id')).toBeNull();
223
181
 
224
- const loadedSubSubCategory = await CategoryEntity.loader(
225
- viewerContext,
226
- viewerContext.getQueryContext()
227
- )
182
+ const loadedSubSubCategory = await CategoryEntity.loader(viewerContext)
228
183
  .enforcing()
229
184
  .loadByIDAsync(subSubCategory.getID());
230
185
  expect(loadedSubSubCategory.getField('parent_category_id')).not.toBeNull();
@@ -236,23 +191,17 @@ describe('EntityEdgeDeletionBehavior.SET_NULL', () => {
236
191
  const companionProvider = createUnitTestEntityCompanionProvider();
237
192
  const viewerContext = new TestViewerContext(companionProvider);
238
193
 
239
- const categoryA = await CategoryEntity.creator(
240
- viewerContext,
241
- viewerContext.getQueryContext()
242
- ).enforceCreateAsync();
243
- const categoryB = await CategoryEntity.creator(viewerContext, viewerContext.getQueryContext())
194
+ const categoryA = await CategoryEntity.creator(viewerContext).enforceCreateAsync();
195
+ const categoryB = await CategoryEntity.creator(viewerContext)
244
196
  .setField('parent_category_id', categoryA.getID())
245
197
  .enforceCreateAsync();
246
- await CategoryEntity.updater(categoryA, viewerContext.getQueryContext())
198
+ await CategoryEntity.updater(categoryA)
247
199
  .setField('parent_category_id', categoryB.getID())
248
200
  .enforceUpdateAsync();
249
201
 
250
- await CategoryEntity.enforceDeleteAsync(categoryA, viewerContext.getQueryContext());
202
+ await CategoryEntity.enforceDeleteAsync(categoryA);
251
203
 
252
- const loadedCategoryB = await CategoryEntity.loader(
253
- viewerContext,
254
- viewerContext.getQueryContext()
255
- )
204
+ const loadedCategoryB = await CategoryEntity.loader(viewerContext)
256
205
  .enforcing()
257
206
  .loadByIDAsync(categoryB.getID());
258
207
  expect(loadedCategoryB.getField('parent_category_id')).toBeNull();
@@ -268,32 +217,24 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
268
217
  const companionProvider = createUnitTestEntityCompanionProvider();
269
218
  const viewerContext = new TestViewerContext(companionProvider);
270
219
 
271
- const parentCategory = await CategoryEntity.creator(
272
- viewerContext,
273
- viewerContext.getQueryContext()
274
- ).enforceCreateAsync();
275
- const subCategory = await CategoryEntity.creator(viewerContext, viewerContext.getQueryContext())
220
+ const parentCategory = await CategoryEntity.creator(viewerContext).enforceCreateAsync();
221
+ const subCategory = await CategoryEntity.creator(viewerContext)
276
222
  .setField('parent_category_id', parentCategory.getID())
277
223
  .enforceCreateAsync();
278
- const subSubCategory = await CategoryEntity.creator(
279
- viewerContext,
280
- viewerContext.getQueryContext()
281
- )
224
+ const subSubCategory = await CategoryEntity.creator(viewerContext)
282
225
  .setField('parent_category_id', subCategory.getID())
283
226
  .enforceCreateAsync();
284
227
 
285
228
  await expect(
286
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
287
- .enforcing()
288
- .loadByIDNullableAsync(parentCategory.getID())
229
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parentCategory.getID())
289
230
  ).resolves.not.toBeNull();
290
231
  await expect(
291
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
232
+ CategoryEntity.loader(viewerContext)
292
233
  .enforcing()
293
234
  .loadByFieldEqualingAsync('parent_category_id', parentCategory.getID())
294
235
  ).resolves.not.toBeNull();
295
236
  await expect(
296
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
237
+ CategoryEntity.loader(viewerContext)
297
238
  .enforcing()
298
239
  .loadByFieldEqualingAsync('parent_category_id', subCategory.getID())
299
240
  ).resolves.not.toBeNull();
@@ -314,7 +255,7 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
314
255
  );
315
256
  expect(subSubCategoryCachedBefore.get(subCategory.getID())?.status).toEqual(CacheStatus.HIT);
316
257
 
317
- await CategoryEntity.enforceDeleteAsync(parentCategory, viewerContext.getQueryContext());
258
+ await CategoryEntity.enforceDeleteAsync(parentCategory);
318
259
 
319
260
  const subCategoryCachedAfter = await categoryCacheAdapter.loadManyAsync('parent_category_id', [
320
261
  parentCategory.getID(),
@@ -328,19 +269,13 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
328
269
  expect(subSubCategoryCachedAfter.get(subCategory.getID())?.status).toEqual(CacheStatus.MISS);
329
270
 
330
271
  await expect(
331
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
332
- .enforcing()
333
- .loadByIDNullableAsync(parentCategory.getID())
272
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parentCategory.getID())
334
273
  ).resolves.toBeNull();
335
274
  await expect(
336
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
337
- .enforcing()
338
- .loadByIDNullableAsync(subCategory.getID())
275
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(subCategory.getID())
339
276
  ).resolves.not.toBeNull();
340
277
  await expect(
341
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
342
- .enforcing()
343
- .loadByIDNullableAsync(subSubCategory.getID())
278
+ CategoryEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(subSubCategory.getID())
344
279
  ).resolves.not.toBeNull();
345
280
  });
346
281
 
@@ -352,24 +287,21 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
352
287
  const companionProvider = createUnitTestEntityCompanionProvider();
353
288
  const viewerContext = new TestViewerContext(companionProvider);
354
289
 
355
- const categoryA = await CategoryEntity.creator(
356
- viewerContext,
357
- viewerContext.getQueryContext()
358
- ).enforceCreateAsync();
359
- const categoryB = await CategoryEntity.creator(viewerContext, viewerContext.getQueryContext())
290
+ const categoryA = await CategoryEntity.creator(viewerContext).enforceCreateAsync();
291
+ const categoryB = await CategoryEntity.creator(viewerContext)
360
292
  .setField('parent_category_id', categoryA.getID())
361
293
  .enforceCreateAsync();
362
- await CategoryEntity.updater(categoryA, viewerContext.getQueryContext())
294
+ await CategoryEntity.updater(categoryA)
363
295
  .setField('parent_category_id', categoryB.getID())
364
296
  .enforceUpdateAsync();
365
297
 
366
298
  await expect(
367
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
299
+ CategoryEntity.loader(viewerContext)
368
300
  .enforcing()
369
301
  .loadByFieldEqualingAsync('parent_category_id', categoryA.getID())
370
302
  ).resolves.not.toBeNull();
371
303
  await expect(
372
- CategoryEntity.loader(viewerContext, viewerContext.getQueryContext())
304
+ CategoryEntity.loader(viewerContext)
373
305
  .enforcing()
374
306
  .loadByFieldEqualingAsync('parent_category_id', categoryB.getID())
375
307
  ).resolves.not.toBeNull();
@@ -386,7 +318,7 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
386
318
  expect(categoriesCachedBefore.get(categoryA.getID())?.status).toEqual(CacheStatus.HIT);
387
319
  expect(categoriesCachedBefore.get(categoryB.getID())?.status).toEqual(CacheStatus.HIT);
388
320
 
389
- await CategoryEntity.enforceDeleteAsync(categoryA, viewerContext.getQueryContext());
321
+ await CategoryEntity.enforceDeleteAsync(categoryA);
390
322
 
391
323
  const categoriesCachedAfter = await categoryCacheAdapter.loadManyAsync('parent_category_id', [
392
324
  categoryA.getID(),
@@ -3,15 +3,15 @@ import { instance, mock } from 'ts-mockito';
3
3
  import EntityAssociationLoader from '../EntityAssociationLoader';
4
4
  import EntityLoader from '../EntityLoader';
5
5
  import ReadonlyEntity from '../ReadonlyEntity';
6
+ import ViewerContext from '../ViewerContext';
6
7
  import SimpleTestEntity from '../testfixtures/SimpleTestEntity';
7
8
  import TestEntity from '../testfixtures/TestEntity';
8
- import TestViewerContext from '../testfixtures/TestViewerContext';
9
9
  import { createUnitTestEntityCompanionProvider } from '../utils/testing/createUnitTestEntityCompanionProvider';
10
10
 
11
11
  describe(ReadonlyEntity, () => {
12
12
  describe('getID', () => {
13
13
  it('returns correct value', () => {
14
- const viewerContext = instance(mock(TestViewerContext));
14
+ const viewerContext = instance(mock(ViewerContext));
15
15
  const data = {
16
16
  id: 'what',
17
17
  };
@@ -27,7 +27,7 @@ describe(ReadonlyEntity, () => {
27
27
 
28
28
  describe('toString', () => {
29
29
  it('returns correct value', () => {
30
- const viewerContext = instance(mock(TestViewerContext));
30
+ const viewerContext = instance(mock(ViewerContext));
31
31
  const data = {
32
32
  id: 'what',
33
33
  };
@@ -43,7 +43,7 @@ describe(ReadonlyEntity, () => {
43
43
 
44
44
  describe('getUniqueIdentifier', () => {
45
45
  it('returns a different value for two different entities of the same type', () => {
46
- const viewerContext = instance(mock(TestViewerContext));
46
+ const viewerContext = instance(mock(ViewerContext));
47
47
  const testEntity = new SimpleTestEntity({
48
48
  viewerContext,
49
49
  id: '1',
@@ -68,8 +68,8 @@ describe(ReadonlyEntity, () => {
68
68
  });
69
69
 
70
70
  it('returns the same value even if different viewer context', () => {
71
- const viewerContext = instance(mock(TestViewerContext));
72
- const viewerContext2 = instance(mock(TestViewerContext));
71
+ const viewerContext = instance(mock(ViewerContext));
72
+ const viewerContext2 = instance(mock(ViewerContext));
73
73
  const data = { id: '1' };
74
74
  const testEntity = new SimpleTestEntity({
75
75
  viewerContext,
@@ -87,7 +87,7 @@ describe(ReadonlyEntity, () => {
87
87
  });
88
88
 
89
89
  it('returns a different value for different entities even if same ID', () => {
90
- const viewerContext = instance(mock(TestViewerContext));
90
+ const viewerContext = instance(mock(ViewerContext));
91
91
  const data = { id: '1' };
92
92
  const testEntity = new SimpleTestEntity({
93
93
  viewerContext,
@@ -114,7 +114,7 @@ describe(ReadonlyEntity, () => {
114
114
  });
115
115
 
116
116
  it('cannot be created without an ID', () => {
117
- const viewerContext = instance(mock(TestViewerContext));
117
+ const viewerContext = instance(mock(ViewerContext));
118
118
  const dataWithoutID = {};
119
119
  expect(() => {
120
120
  // eslint-disable-next-line no-new
@@ -128,7 +128,7 @@ describe(ReadonlyEntity, () => {
128
128
  });
129
129
 
130
130
  it('returns correct viewerCo}ntext from instantiation', () => {
131
- const viewerContext = instance(mock(TestViewerContext));
131
+ const viewerContext = instance(mock(ViewerContext));
132
132
  const data = {
133
133
  id: 'what',
134
134
  };
@@ -142,7 +142,7 @@ describe(ReadonlyEntity, () => {
142
142
  });
143
143
 
144
144
  it('returns correct data for field getters', () => {
145
- const viewerContext = instance(mock(TestViewerContext));
145
+ const viewerContext = instance(mock(ViewerContext));
146
146
  const data = {
147
147
  id: 'what',
148
148
  };
@@ -159,7 +159,7 @@ describe(ReadonlyEntity, () => {
159
159
  describe('associationLoader', () => {
160
160
  it('returns a new association loader', () => {
161
161
  const companionProvider = createUnitTestEntityCompanionProvider();
162
- const viewerContext = new TestViewerContext(companionProvider);
162
+ const viewerContext = new ViewerContext(companionProvider);
163
163
  const data = {
164
164
  id: 'what',
165
165
  };
@@ -176,10 +176,8 @@ describe(ReadonlyEntity, () => {
176
176
  describe('loader', () => {
177
177
  it('creates a new EntityLoader', async () => {
178
178
  const companionProvider = createUnitTestEntityCompanionProvider();
179
- const viewerContext = new TestViewerContext(companionProvider);
180
- expect(
181
- SimpleTestEntity.loader(viewerContext, viewerContext.getQueryContext())
182
- ).toBeInstanceOf(EntityLoader);
179
+ const viewerContext = new ViewerContext(companionProvider);
180
+ expect(SimpleTestEntity.loader(viewerContext)).toBeInstanceOf(EntityLoader);
183
181
  });
184
182
  });
185
183
  });
@@ -3,12 +3,11 @@ import ViewerContext from '../ViewerContext';
3
3
  import { createUnitTestEntityCompanionProvider } from '../utils/testing/createUnitTestEntityCompanionProvider';
4
4
 
5
5
  describe(ViewerContext, () => {
6
- describe('getNonTransactionalQueryContextForDatabaseAdaptorFlavor', () => {
6
+ describe('getQueryContextForDatabaseAdaptorFlavor', () => {
7
7
  it('creates a new regular query context', () => {
8
8
  const companionProvider = createUnitTestEntityCompanionProvider();
9
9
  const viewerContext = new ViewerContext(companionProvider);
10
- const queryContext =
11
- viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres');
10
+ const queryContext = viewerContext.getQueryContextForDatabaseAdaptorFlavor('postgres');
12
11
  expect(queryContext).toBeInstanceOf(EntityQueryContext);
13
12
  expect(queryContext.isInTransaction()).toBe(false);
14
13
  });
@@ -3,22 +3,22 @@ import { EntityCompanionDefinition } from '../../EntityCompanionProvider';
3
3
  import EntityConfiguration from '../../EntityConfiguration';
4
4
  import { UUIDField, EnumField, StringField } from '../../EntityFields';
5
5
  import EntityPrivacyPolicy from '../../EntityPrivacyPolicy';
6
+ import ViewerContext from '../../ViewerContext';
6
7
  import { successfulResults, failedResults } from '../../entityUtils';
7
8
  import AlwaysAllowPrivacyPolicyRule from '../../rules/AlwaysAllowPrivacyPolicyRule';
8
- import TestViewerContext from '../../testfixtures/TestViewerContext';
9
9
  import { createUnitTestEntityCompanionProvider } from '../../utils/testing/createUnitTestEntityCompanionProvider';
10
10
 
11
11
  describe('Two entities backed by the same table', () => {
12
12
  test('load by different types', async () => {
13
13
  const companionProvider = createUnitTestEntityCompanionProvider();
14
- const viewerContext = new TestViewerContext(companionProvider);
14
+ const viewerContext = new ViewerContext(companionProvider);
15
15
 
16
- const one = await OneTestEntity.creator(viewerContext, viewerContext.getQueryContext())
16
+ const one = await OneTestEntity.creator(viewerContext)
17
17
  .setField('entity_type', EntityType.ONE)
18
18
  .setField('common_other_field', 'wat')
19
19
  .enforceCreateAsync();
20
20
 
21
- const two = await TwoTestEntity.creator(viewerContext, viewerContext.getQueryContext())
21
+ const two = await TwoTestEntity.creator(viewerContext)
22
22
  .setField('entity_type', EntityType.TWO)
23
23
  .setField('other_field', 'blah')
24
24
  .setField('common_other_field', 'wat')
@@ -28,21 +28,17 @@ describe('Two entities backed by the same table', () => {
28
28
  expect(two).toBeInstanceOf(TwoTestEntity);
29
29
 
30
30
  await expect(
31
- TwoTestEntity.loader(viewerContext, viewerContext.getQueryContext())
32
- .enforcing()
33
- .loadByIDAsync(one.getID())
31
+ TwoTestEntity.loader(viewerContext).enforcing().loadByIDAsync(one.getID())
34
32
  ).rejects.toThrowError('TwoTestEntity must be instantiated with two data');
35
33
 
36
34
  await expect(
37
- OneTestEntity.loader(viewerContext, viewerContext.getQueryContext())
38
- .enforcing()
39
- .loadByIDAsync(two.getID())
35
+ OneTestEntity.loader(viewerContext).enforcing().loadByIDAsync(two.getID())
40
36
  ).rejects.toThrowError('OneTestEntity must be instantiated with one data');
41
37
 
42
- const manyResults = await OneTestEntity.loader(
43
- viewerContext,
44
- viewerContext.getQueryContext()
45
- ).loadManyByFieldEqualingAsync('common_other_field', 'wat');
38
+ const manyResults = await OneTestEntity.loader(viewerContext).loadManyByFieldEqualingAsync(
39
+ 'common_other_field',
40
+ 'wat'
41
+ );
46
42
  const successfulManyResults = successfulResults(manyResults);
47
43
  const failedManyResults = failedResults(manyResults);
48
44
 
@@ -55,8 +51,7 @@ describe('Two entities backed by the same table', () => {
55
51
  );
56
52
 
57
53
  const fieldEqualityConjunctionResults = await OneTestEntity.loader(
58
- viewerContext,
59
- viewerContext.getQueryContext()
54
+ viewerContext
60
55
  ).loadManyByFieldEqualityConjunctionAsync([
61
56
  {
62
57
  fieldName: 'common_other_field',
@@ -111,30 +106,24 @@ const testEntityConfiguration = new EntityConfiguration<TestFields>({
111
106
  cacheAdapterFlavor: 'redis',
112
107
  });
113
108
 
114
- class TestEntityPrivacyPolicy extends EntityPrivacyPolicy<
115
- any,
116
- string,
117
- TestViewerContext,
118
- any,
119
- any
120
- > {
109
+ class TestEntityPrivacyPolicy extends EntityPrivacyPolicy<any, string, ViewerContext, any, any> {
121
110
  protected override readonly readRules = [
122
- new AlwaysAllowPrivacyPolicyRule<any, string, TestViewerContext, any, any>(),
111
+ new AlwaysAllowPrivacyPolicyRule<any, string, ViewerContext, any, any>(),
123
112
  ];
124
113
  protected override readonly createRules = [
125
- new AlwaysAllowPrivacyPolicyRule<any, string, TestViewerContext, any, any>(),
114
+ new AlwaysAllowPrivacyPolicyRule<any, string, ViewerContext, any, any>(),
126
115
  ];
127
116
  protected override readonly updateRules = [
128
- new AlwaysAllowPrivacyPolicyRule<any, string, TestViewerContext, any, any>(),
117
+ new AlwaysAllowPrivacyPolicyRule<any, string, ViewerContext, any, any>(),
129
118
  ];
130
119
  protected override readonly deleteRules = [
131
- new AlwaysAllowPrivacyPolicyRule<any, string, TestViewerContext, any, any>(),
120
+ new AlwaysAllowPrivacyPolicyRule<any, string, ViewerContext, any, any>(),
132
121
  ];
133
122
  }
134
123
 
135
- class OneTestEntity extends Entity<TestFields, string, TestViewerContext, OneTestFields> {
124
+ class OneTestEntity extends Entity<TestFields, string, ViewerContext, OneTestFields> {
136
125
  constructor(constructorParams: {
137
- viewerContext: TestViewerContext;
126
+ viewerContext: ViewerContext;
138
127
  id: string;
139
128
  databaseFields: Readonly<TestFields>;
140
129
  selectedFields: Readonly<Pick<TestFields, OneTestFields>>;
@@ -148,7 +137,7 @@ class OneTestEntity extends Entity<TestFields, string, TestViewerContext, OneTes
148
137
  static defineCompanionDefinition(): EntityCompanionDefinition<
149
138
  TestFields,
150
139
  string,
151
- TestViewerContext,
140
+ ViewerContext,
152
141
  OneTestEntity,
153
142
  TestEntityPrivacyPolicy,
154
143
  OneTestFields
@@ -162,9 +151,9 @@ class OneTestEntity extends Entity<TestFields, string, TestViewerContext, OneTes
162
151
  }
163
152
  }
164
153
 
165
- class TwoTestEntity extends Entity<TestFields, string, TestViewerContext, TwoTestFields> {
154
+ class TwoTestEntity extends Entity<TestFields, string, ViewerContext, TwoTestFields> {
166
155
  constructor(constructorParams: {
167
- viewerContext: TestViewerContext;
156
+ viewerContext: ViewerContext;
168
157
  id: string;
169
158
  databaseFields: Readonly<TestFields>;
170
159
  selectedFields: Readonly<Pick<TestFields, TwoTestFields>>;
@@ -178,7 +167,7 @@ class TwoTestEntity extends Entity<TestFields, string, TestViewerContext, TwoTes
178
167
  static defineCompanionDefinition(): EntityCompanionDefinition<
179
168
  TestFields,
180
169
  string,
181
- TestViewerContext,
170
+ ViewerContext,
182
171
  TwoTestEntity,
183
172
  TestEntityPrivacyPolicy,
184
173
  TwoTestFields