@expo/entity-testing-utils 0.44.0 → 0.46.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 (85) hide show
  1. package/build/{PrivacyPolicyRuleTestUtils.js → src/PrivacyPolicyRuleTestUtils.js} +11 -10
  2. package/build/src/PrivacyPolicyRuleTestUtils.js.map +1 -0
  3. package/build/src/StubCacheAdapter.js.map +1 -0
  4. package/build/{StubDatabaseAdapter.d.ts → src/StubDatabaseAdapter.d.ts} +2 -2
  5. package/build/{StubDatabaseAdapter.js → src/StubDatabaseAdapter.js} +2 -1
  6. package/build/src/StubDatabaseAdapter.js.map +1 -0
  7. package/build/{StubDatabaseAdapterProvider.d.ts → src/StubDatabaseAdapterProvider.d.ts} +1 -1
  8. package/build/src/StubDatabaseAdapterProvider.js +12 -0
  9. package/build/src/StubDatabaseAdapterProvider.js.map +1 -0
  10. package/build/{StubQueryContextProvider.d.ts → src/StubQueryContextProvider.d.ts} +2 -2
  11. package/build/{StubQueryContextProvider.js → src/StubQueryContextProvider.js} +2 -1
  12. package/build/src/StubQueryContextProvider.js.map +1 -0
  13. package/build/src/TSMockitoExtensions.js.map +1 -0
  14. package/build/src/__testfixtures__/DateIDTestEntity.d.ts +14 -0
  15. package/build/src/__testfixtures__/DateIDTestEntity.js +42 -0
  16. package/build/src/__testfixtures__/DateIDTestEntity.js.map +1 -0
  17. package/build/src/__testfixtures__/SimpleTestEntity.d.ts +15 -0
  18. package/build/src/__testfixtures__/SimpleTestEntity.js +42 -0
  19. package/build/src/__testfixtures__/SimpleTestEntity.js.map +1 -0
  20. package/build/src/__testfixtures__/TestEntity.d.ts +25 -0
  21. package/build/src/__testfixtures__/TestEntity.js +92 -0
  22. package/build/src/__testfixtures__/TestEntity.js.map +1 -0
  23. package/build/src/__testfixtures__/TestEntityNumberKey.d.ts +14 -0
  24. package/build/src/__testfixtures__/TestEntityNumberKey.js +42 -0
  25. package/build/src/__testfixtures__/TestEntityNumberKey.js.map +1 -0
  26. package/build/src/__tests__/FileConsistentcyWithEntity-test.d.ts +1 -0
  27. package/build/src/__tests__/FileConsistentcyWithEntity-test.js +27 -0
  28. package/build/src/__tests__/FileConsistentcyWithEntity-test.js.map +1 -0
  29. package/build/src/__tests__/PrivacyPolicyRuleTestUtils-test.d.ts +1 -0
  30. package/build/src/__tests__/PrivacyPolicyRuleTestUtils-test.js +37 -0
  31. package/build/src/__tests__/PrivacyPolicyRuleTestUtils-test.js.map +1 -0
  32. package/build/src/__tests__/StubCacheAdapter-test.d.ts +1 -0
  33. package/build/src/__tests__/StubCacheAdapter-test.js +76 -0
  34. package/build/src/__tests__/StubCacheAdapter-test.js.map +1 -0
  35. package/build/src/__tests__/StubDatabaseAdapter-test.d.ts +1 -0
  36. package/build/src/__tests__/StubDatabaseAdapter-test.js +427 -0
  37. package/build/src/__tests__/StubDatabaseAdapter-test.js.map +1 -0
  38. package/build/src/__tests__/TSMockitoExtensions-test.d.ts +1 -0
  39. package/build/src/__tests__/TSMockitoExtensions-test.js +50 -0
  40. package/build/src/__tests__/TSMockitoExtensions-test.js.map +1 -0
  41. package/build/{createUnitTestEntityCompanionProvider.js → src/createUnitTestEntityCompanionProvider.js} +4 -7
  42. package/build/{createUnitTestEntityCompanionProvider.js.map → src/createUnitTestEntityCompanionProvider.js.map} +1 -1
  43. package/build/{describeFieldTestCase.d.ts → src/describeFieldTestCase.d.ts} +1 -1
  44. package/build/src/describeFieldTestCase.js +19 -0
  45. package/build/src/describeFieldTestCase.js.map +1 -0
  46. package/build/src/index.d.ts +12 -0
  47. package/build/src/index.js +30 -0
  48. package/build/src/index.js.map +1 -0
  49. package/build/tsconfig.tsbuildinfo +1 -0
  50. package/package.json +15 -23
  51. package/src/PrivacyPolicyRuleTestUtils.ts +1 -0
  52. package/src/StubDatabaseAdapter.ts +8 -8
  53. package/src/StubDatabaseAdapterProvider.ts +2 -2
  54. package/src/StubQueryContextProvider.ts +2 -2
  55. package/src/__testfixtures__/DateIDTestEntity.ts +3 -3
  56. package/src/__testfixtures__/SimpleTestEntity.ts +3 -3
  57. package/src/__testfixtures__/TestEntity.ts +6 -6
  58. package/src/__testfixtures__/TestEntityNumberKey.ts +3 -3
  59. package/src/__tests__/FileConsistentcyWithEntity-test.ts +1 -0
  60. package/src/__tests__/PrivacyPolicyRuleTestUtils-test.ts +1 -0
  61. package/src/__tests__/StubCacheAdapter-test.ts +1 -0
  62. package/src/__tests__/StubDatabaseAdapter-test.ts +6 -5
  63. package/src/__tests__/TSMockitoExtensions-test.ts +1 -0
  64. package/src/createUnitTestEntityCompanionProvider.ts +2 -2
  65. package/src/describeFieldTestCase.ts +2 -1
  66. package/src/index.ts +4 -4
  67. package/build/PrivacyPolicyRuleTestUtils.js.map +0 -1
  68. package/build/StubCacheAdapter.js.map +0 -1
  69. package/build/StubDatabaseAdapter.js.map +0 -1
  70. package/build/StubDatabaseAdapterProvider.js +0 -14
  71. package/build/StubDatabaseAdapterProvider.js.map +0 -1
  72. package/build/StubQueryContextProvider.js.map +0 -1
  73. package/build/TSMockitoExtensions.js.map +0 -1
  74. package/build/describeFieldTestCase.js +0 -18
  75. package/build/describeFieldTestCase.js.map +0 -1
  76. package/build/index.d.ts +0 -12
  77. package/build/index.js +0 -38
  78. package/build/index.js.map +0 -1
  79. package/build/tsconfig.build.tsbuildinfo +0 -1
  80. /package/build/{PrivacyPolicyRuleTestUtils.d.ts → src/PrivacyPolicyRuleTestUtils.d.ts} +0 -0
  81. /package/build/{StubCacheAdapter.d.ts → src/StubCacheAdapter.d.ts} +0 -0
  82. /package/build/{StubCacheAdapter.js → src/StubCacheAdapter.js} +0 -0
  83. /package/build/{TSMockitoExtensions.d.ts → src/TSMockitoExtensions.d.ts} +0 -0
  84. /package/build/{TSMockitoExtensions.js → src/TSMockitoExtensions.js} +0 -0
  85. /package/build/{createUnitTestEntityCompanionProvider.d.ts → src/createUnitTestEntityCompanionProvider.d.ts} +0 -0
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const entity_1 = require("@expo/entity");
4
+ const globals_1 = require("@jest/globals");
5
+ const StubCacheAdapter_1 = require("../StubCacheAdapter");
6
+ const TestEntity_1 = require("../__testfixtures__/TestEntity");
7
+ (0, globals_1.describe)(StubCacheAdapter_1.NoCacheStubCacheAdapter, () => {
8
+ (0, globals_1.describe)('loadManyAsync', () => {
9
+ (0, globals_1.it)('should return a map of CacheLoadResult with status CacheStatus.MISS for all single values', async () => {
10
+ const adapter = new StubCacheAdapter_1.NoCacheStubCacheAdapter();
11
+ const result = await adapter.loadManyAsync(new entity_1.SingleFieldHolder('stringField'), [
12
+ new entity_1.SingleFieldValueHolder('huh'),
13
+ ]);
14
+ (0, globals_1.expect)(result).toEqual(new entity_1.SingleFieldValueHolderMap(new Map([[new entity_1.SingleFieldValueHolder('huh'), { status: entity_1.CacheStatus.MISS }]])));
15
+ });
16
+ (0, globals_1.it)('should return a map of CacheLoadResult with status CacheStatus.MISS for all composite values', async () => {
17
+ const adapter = new StubCacheAdapter_1.NoCacheStubCacheAdapter();
18
+ const result = await adapter.loadManyAsync(new entity_1.CompositeFieldHolder(['stringField', 'intField']), [new entity_1.CompositeFieldValueHolder({ stringField: 'huh', intField: 42 })]);
19
+ (0, globals_1.expect)(result).toEqual(new entity_1.CompositeFieldValueHolderMap(new Map([
20
+ [
21
+ new entity_1.CompositeFieldValueHolder({ stringField: 'huh', intField: 42 }),
22
+ { status: entity_1.CacheStatus.MISS },
23
+ ],
24
+ ])));
25
+ });
26
+ });
27
+ });
28
+ (0, globals_1.describe)(StubCacheAdapter_1.InMemoryFullCacheStubCacheAdapter, () => {
29
+ (0, globals_1.it)('correctly functions', async () => {
30
+ const adapter = new StubCacheAdapter_1.InMemoryFullCacheStubCacheAdapterProvider().getCacheAdapter(TestEntity_1.testEntityConfiguration);
31
+ const result = await adapter.loadManyAsync(new entity_1.SingleFieldHolder('stringField'), [
32
+ new entity_1.SingleFieldValueHolder('huh'),
33
+ ]);
34
+ (0, globals_1.expect)(result).toEqual(new entity_1.SingleFieldValueHolderMap(new Map([[new entity_1.SingleFieldValueHolder('huh'), { status: entity_1.CacheStatus.MISS }]])));
35
+ await adapter.cacheManyAsync(new entity_1.SingleFieldHolder('stringField'), new Map());
36
+ const result2 = await adapter.loadManyAsync(new entity_1.SingleFieldHolder('stringField'), [
37
+ new entity_1.SingleFieldValueHolder('huh'),
38
+ ]);
39
+ (0, globals_1.expect)(result2).toEqual(new entity_1.SingleFieldValueHolderMap(new Map([[new entity_1.SingleFieldValueHolder('huh'), { status: entity_1.CacheStatus.MISS }]])));
40
+ const fields = {
41
+ stringField: 'huh',
42
+ customIdField: 'id1',
43
+ testIndexedField: 'wat',
44
+ intField: 3,
45
+ dateField: new Date(),
46
+ nullableField: null,
47
+ };
48
+ await adapter.cacheManyAsync(new entity_1.SingleFieldHolder('stringField'), new Map([[new entity_1.SingleFieldValueHolder('huh'), fields]]));
49
+ const result3 = await adapter.loadManyAsync(new entity_1.SingleFieldHolder('stringField'), [
50
+ new entity_1.SingleFieldValueHolder('huh'),
51
+ ]);
52
+ (0, globals_1.expect)(result3).toEqual(new entity_1.SingleFieldValueHolderMap(new Map([[new entity_1.SingleFieldValueHolder('huh'), { status: entity_1.CacheStatus.HIT, item: fields }]])));
53
+ await adapter.invalidateManyAsync(new entity_1.SingleFieldHolder('stringField'), [
54
+ new entity_1.SingleFieldValueHolder('huh'),
55
+ ]);
56
+ const result4 = await adapter.loadManyAsync(new entity_1.SingleFieldHolder('stringField'), [
57
+ new entity_1.SingleFieldValueHolder('huh'),
58
+ ]);
59
+ (0, globals_1.expect)(result4).toEqual(new entity_1.SingleFieldValueHolderMap(new Map([[new entity_1.SingleFieldValueHolder('huh'), { status: entity_1.CacheStatus.MISS }]])));
60
+ await adapter.cacheDBMissesAsync(new entity_1.SingleFieldHolder('stringField'), [
61
+ new entity_1.SingleFieldValueHolder('huh'),
62
+ ]);
63
+ const result5 = await adapter.loadManyAsync(new entity_1.SingleFieldHolder('stringField'), [
64
+ new entity_1.SingleFieldValueHolder('huh'),
65
+ ]);
66
+ (0, globals_1.expect)(result5).toEqual(new entity_1.SingleFieldValueHolderMap(new Map([[new entity_1.SingleFieldValueHolder('huh'), { status: entity_1.CacheStatus.NEGATIVE }]])));
67
+ await adapter.invalidateManyAsync(new entity_1.SingleFieldHolder('stringField'), [
68
+ new entity_1.SingleFieldValueHolder('huh'),
69
+ ]);
70
+ const result6 = await adapter.loadManyAsync(new entity_1.SingleFieldHolder('stringField'), [
71
+ new entity_1.SingleFieldValueHolder('huh'),
72
+ ]);
73
+ (0, globals_1.expect)(result6).toEqual(new entity_1.SingleFieldValueHolderMap(new Map([[new entity_1.SingleFieldValueHolder('huh'), { status: entity_1.CacheStatus.MISS }]])));
74
+ });
75
+ });
76
+ //# sourceMappingURL=StubCacheAdapter-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StubCacheAdapter-test.js","sourceRoot":"","sources":["../../../src/__tests__/StubCacheAdapter-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,427 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const entity_1 = require("@expo/entity");
4
+ const globals_1 = require("@jest/globals");
5
+ const ts_mockito_1 = require("ts-mockito");
6
+ const StubDatabaseAdapter_1 = require("../StubDatabaseAdapter");
7
+ const DateIDTestEntity_1 = require("../__testfixtures__/DateIDTestEntity");
8
+ const SimpleTestEntity_1 = require("../__testfixtures__/SimpleTestEntity");
9
+ const TestEntity_1 = require("../__testfixtures__/TestEntity");
10
+ const TestEntityNumberKey_1 = require("../__testfixtures__/TestEntityNumberKey");
11
+ (0, globals_1.describe)(StubDatabaseAdapter_1.StubDatabaseAdapter, () => {
12
+ (0, globals_1.describe)('fetchManyWhereAsync', () => {
13
+ (0, globals_1.it)('fetches many where single', async () => {
14
+ const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(entity_1.EntityQueryContext));
15
+ const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
16
+ [
17
+ TestEntity_1.testEntityConfiguration.tableName,
18
+ [
19
+ {
20
+ customIdField: 'hello',
21
+ testIndexedField: 'h1',
22
+ intField: 5,
23
+ stringField: 'huh',
24
+ dateField: new Date(),
25
+ nullableField: null,
26
+ },
27
+ {
28
+ customIdField: 'world',
29
+ testIndexedField: 'h2',
30
+ intField: 3,
31
+ stringField: 'wat',
32
+ dateField: new Date(),
33
+ nullableField: null,
34
+ },
35
+ ],
36
+ ],
37
+ ])));
38
+ const results = await databaseAdapter.fetchManyWhereAsync(queryContext, new entity_1.SingleFieldHolder('stringField'), [new entity_1.SingleFieldValueHolder('huh')]);
39
+ (0, globals_1.expect)(results.get(new entity_1.SingleFieldValueHolder('huh'))).toHaveLength(1);
40
+ });
41
+ (0, globals_1.it)('fetches many where composite', async () => {
42
+ const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(entity_1.EntityQueryContext));
43
+ const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
44
+ [
45
+ TestEntity_1.testEntityConfiguration.tableName,
46
+ [
47
+ {
48
+ customIdField: 'hello',
49
+ testIndexedField: 'h1',
50
+ intField: 5,
51
+ stringField: 'huh',
52
+ dateField: new Date(),
53
+ nullableField: null,
54
+ },
55
+ {
56
+ customIdField: 'world',
57
+ testIndexedField: 'h2',
58
+ intField: 3,
59
+ stringField: 'wat',
60
+ dateField: new Date(),
61
+ nullableField: null,
62
+ },
63
+ ],
64
+ ],
65
+ ])));
66
+ const results = await databaseAdapter.fetchManyWhereAsync(queryContext, new entity_1.CompositeFieldHolder(['stringField', 'intField']), [new entity_1.CompositeFieldValueHolder({ stringField: 'huh', intField: 5 })]);
67
+ (0, globals_1.expect)(results.get(new entity_1.CompositeFieldValueHolder({ stringField: 'huh', intField: 5 }))).toHaveLength(1);
68
+ const results2 = await databaseAdapter.fetchManyWhereAsync(queryContext, new entity_1.CompositeFieldHolder(['stringField', 'intField']), [new entity_1.CompositeFieldValueHolder({ stringField: 'not-in-db', intField: 5 })]);
69
+ (0, globals_1.expect)(results2.get(new entity_1.CompositeFieldValueHolder({ stringField: 'not-in-db', intField: 5 }))).toHaveLength(0);
70
+ });
71
+ });
72
+ (0, globals_1.describe)('fetchManyByFieldEqualityConjunctionAsync', () => {
73
+ (0, globals_1.it)('supports conjuntions and query modifiers', async () => {
74
+ const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(entity_1.EntityQueryContext));
75
+ const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
76
+ [
77
+ TestEntity_1.testEntityConfiguration.tableName,
78
+ [
79
+ {
80
+ customIdField: 'hello',
81
+ testIndexedField: 'h1',
82
+ intField: 3,
83
+ stringField: 'a',
84
+ dateField: new Date(),
85
+ nullableField: null,
86
+ },
87
+ {
88
+ customIdField: 'world',
89
+ testIndexedField: 'h2',
90
+ intField: 3,
91
+ stringField: 'b',
92
+ dateField: new Date(),
93
+ nullableField: null,
94
+ },
95
+ {
96
+ customIdField: 'world',
97
+ testIndexedField: 'h2',
98
+ intField: 3,
99
+ stringField: 'c',
100
+ dateField: new Date(),
101
+ nullableField: null,
102
+ },
103
+ ],
104
+ ],
105
+ ])));
106
+ const results = await databaseAdapter.fetchManyByFieldEqualityConjunctionAsync(queryContext, [
107
+ {
108
+ fieldName: 'customIdField',
109
+ fieldValues: ['hello', 'world'],
110
+ },
111
+ {
112
+ fieldName: 'intField',
113
+ fieldValue: 3,
114
+ },
115
+ ], {
116
+ limit: 2,
117
+ offset: 1,
118
+ orderBy: [
119
+ {
120
+ fieldName: 'stringField',
121
+ order: entity_1.OrderByOrdering.DESCENDING,
122
+ },
123
+ ],
124
+ });
125
+ (0, globals_1.expect)(results).toHaveLength(2);
126
+ (0, globals_1.expect)(results.map((e) => e.stringField)).toEqual(['b', 'a']);
127
+ });
128
+ (0, globals_1.it)('supports multiple order bys', async () => {
129
+ const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(entity_1.EntityQueryContext));
130
+ const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
131
+ [
132
+ TestEntity_1.testEntityConfiguration.tableName,
133
+ [
134
+ {
135
+ customIdField: 'hello',
136
+ testIndexedField: 'h1',
137
+ intField: 3,
138
+ stringField: 'a',
139
+ dateField: new Date(),
140
+ nullableField: null,
141
+ },
142
+ {
143
+ customIdField: 'world',
144
+ testIndexedField: 'h2',
145
+ intField: 3,
146
+ stringField: 'b',
147
+ dateField: new Date(),
148
+ nullableField: null,
149
+ },
150
+ {
151
+ customIdField: 'world',
152
+ testIndexedField: 'h2',
153
+ intField: 3,
154
+ stringField: 'c',
155
+ dateField: new Date(),
156
+ nullableField: null,
157
+ },
158
+ ],
159
+ ],
160
+ ])));
161
+ const results = await databaseAdapter.fetchManyByFieldEqualityConjunctionAsync(queryContext, [
162
+ {
163
+ fieldName: 'intField',
164
+ fieldValue: 3,
165
+ },
166
+ ], {
167
+ orderBy: [
168
+ {
169
+ fieldName: 'intField',
170
+ order: entity_1.OrderByOrdering.DESCENDING,
171
+ },
172
+ {
173
+ fieldName: 'stringField',
174
+ order: entity_1.OrderByOrdering.DESCENDING,
175
+ },
176
+ ],
177
+ });
178
+ (0, globals_1.expect)(results).toHaveLength(3);
179
+ (0, globals_1.expect)(results.map((e) => e.stringField)).toEqual(['c', 'b', 'a']);
180
+ });
181
+ (0, globals_1.it)('supports null field values', async () => {
182
+ const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(entity_1.EntityQueryContext));
183
+ const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
184
+ [
185
+ TestEntity_1.testEntityConfiguration.tableName,
186
+ [
187
+ {
188
+ customIdField: '1',
189
+ testIndexedField: 'h1',
190
+ intField: 1,
191
+ stringField: 'a',
192
+ dateField: new Date(),
193
+ nullableField: 'a',
194
+ },
195
+ {
196
+ customIdField: '2',
197
+ testIndexedField: 'h2',
198
+ intField: 2,
199
+ stringField: 'a',
200
+ dateField: new Date(),
201
+ nullableField: 'b',
202
+ },
203
+ {
204
+ customIdField: '3',
205
+ testIndexedField: 'h3',
206
+ intField: 3,
207
+ stringField: 'a',
208
+ dateField: new Date(),
209
+ nullableField: null,
210
+ },
211
+ {
212
+ customIdField: '4',
213
+ testIndexedField: 'h4',
214
+ intField: 4,
215
+ stringField: 'b',
216
+ dateField: new Date(),
217
+ nullableField: null,
218
+ },
219
+ ],
220
+ ],
221
+ ])));
222
+ const results = await databaseAdapter.fetchManyByFieldEqualityConjunctionAsync(queryContext, [{ fieldName: 'nullableField', fieldValue: null }], {});
223
+ (0, globals_1.expect)(results).toHaveLength(2);
224
+ (0, globals_1.expect)(results[0].nullableField).toBeNull();
225
+ const results2 = await databaseAdapter.fetchManyByFieldEqualityConjunctionAsync(queryContext, [
226
+ { fieldName: 'nullableField', fieldValues: ['a', null] },
227
+ { fieldName: 'stringField', fieldValue: 'a' },
228
+ ], {
229
+ orderBy: [
230
+ {
231
+ fieldName: 'nullableField',
232
+ order: entity_1.OrderByOrdering.DESCENDING,
233
+ },
234
+ ],
235
+ });
236
+ (0, globals_1.expect)(results2).toHaveLength(2);
237
+ (0, globals_1.expect)(results2.map((e) => e.nullableField)).toEqual([null, 'a']);
238
+ });
239
+ });
240
+ (0, globals_1.describe)('fetchManyByRawWhereClauseAsync', () => {
241
+ (0, globals_1.it)('throws because it is unsupported', async () => {
242
+ const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(entity_1.EntityQueryContext));
243
+ const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, new Map());
244
+ await (0, globals_1.expect)(databaseAdapter.fetchManyByRawWhereClauseAsync(queryContext, '', [], {})).rejects.toThrow();
245
+ });
246
+ });
247
+ (0, globals_1.describe)('insertAsync', () => {
248
+ (0, globals_1.it)('inserts a record', async () => {
249
+ const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(entity_1.EntityQueryContext));
250
+ const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, new Map());
251
+ const result = await databaseAdapter.insertAsync(queryContext, {
252
+ stringField: 'hello',
253
+ });
254
+ (0, globals_1.expect)(result).toMatchObject({
255
+ stringField: 'hello',
256
+ });
257
+ (0, globals_1.expect)(databaseAdapter.getObjectCollectionForTable(TestEntity_1.testEntityConfiguration.tableName)).toHaveLength(1);
258
+ });
259
+ (0, globals_1.it)('inserts a record with valid v7 id', async () => {
260
+ const expectedTime = new Date('2024-06-03T20:16:33.761Z');
261
+ globals_1.jest.useFakeTimers({
262
+ now: expectedTime,
263
+ });
264
+ const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(entity_1.EntityQueryContext));
265
+ const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, new Map());
266
+ const result = await databaseAdapter.insertAsync(queryContext, {
267
+ stringField: 'hello',
268
+ });
269
+ const ts = getTimeFromUUIDv7(result.customIdField);
270
+ (0, globals_1.expect)(ts).toEqual(expectedTime);
271
+ });
272
+ });
273
+ (0, globals_1.describe)('updateAsync', () => {
274
+ (0, globals_1.it)('updates a record', async () => {
275
+ const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(entity_1.EntityQueryContext));
276
+ const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
277
+ [
278
+ TestEntity_1.testEntityConfiguration.tableName,
279
+ [
280
+ {
281
+ customIdField: 'hello',
282
+ testIndexedField: 'h1',
283
+ intField: 3,
284
+ stringField: 'a',
285
+ dateField: new Date(),
286
+ nullableField: null,
287
+ },
288
+ ],
289
+ ],
290
+ ])));
291
+ const result = await databaseAdapter.updateAsync(queryContext, 'customIdField', 'hello', {
292
+ stringField: 'b',
293
+ });
294
+ (0, globals_1.expect)(result).toMatchObject({
295
+ stringField: 'b',
296
+ testIndexedField: 'h1',
297
+ });
298
+ });
299
+ (0, globals_1.it)('throws error when empty update to match common DBMS behavior', async () => {
300
+ const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(entity_1.EntityQueryContext));
301
+ const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
302
+ [
303
+ TestEntity_1.testEntityConfiguration.tableName,
304
+ [
305
+ {
306
+ customIdField: 'hello',
307
+ testIndexedField: 'h1',
308
+ intField: 3,
309
+ stringField: 'a',
310
+ dateField: new Date(),
311
+ nullableField: null,
312
+ },
313
+ ],
314
+ ],
315
+ ])));
316
+ await (0, globals_1.expect)(databaseAdapter.updateAsync(queryContext, 'customIdField', 'hello', {})).rejects.toThrow(`Empty update (custom_id = hello)`);
317
+ });
318
+ });
319
+ (0, globals_1.describe)('deleteAsync', () => {
320
+ (0, globals_1.it)('deletes an object', async () => {
321
+ const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(entity_1.EntityQueryContext));
322
+ const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
323
+ [
324
+ TestEntity_1.testEntityConfiguration.tableName,
325
+ [
326
+ {
327
+ customIdField: 'hello',
328
+ testIndexedField: 'h1',
329
+ intField: 3,
330
+ stringField: 'a',
331
+ dateField: new Date(),
332
+ nullableField: null,
333
+ },
334
+ ],
335
+ ],
336
+ ])));
337
+ await databaseAdapter.deleteAsync(queryContext, 'customIdField', 'hello');
338
+ (0, globals_1.expect)(databaseAdapter.getObjectCollectionForTable(TestEntity_1.testEntityConfiguration.tableName)).toHaveLength(0);
339
+ });
340
+ });
341
+ (0, globals_1.it)('supports string and number IDs', async () => {
342
+ const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(entity_1.EntityQueryContext));
343
+ const databaseAdapter1 = new StubDatabaseAdapter_1.StubDatabaseAdapter(SimpleTestEntity_1.simpleTestEntityConfiguration, new Map());
344
+ const insertedObject1 = await databaseAdapter1.insertAsync(queryContext, {});
345
+ (0, globals_1.expect)(typeof insertedObject1.id).toBe('string');
346
+ const databaseAdapter2 = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntityNumberKey_1.numberKeyEntityConfiguration, new Map());
347
+ const insertedObject2 = await databaseAdapter2.insertAsync(queryContext, {});
348
+ (0, globals_1.expect)(typeof insertedObject2.id).toBe('number');
349
+ const databaseAdapter3 = new StubDatabaseAdapter_1.StubDatabaseAdapter(DateIDTestEntity_1.dateIDTestEntityConfiguration, new Map());
350
+ await (0, globals_1.expect)(databaseAdapter3.insertAsync(queryContext, {})).rejects.toThrow('Unsupported ID type for StubDatabaseAdapter: DateField');
351
+ });
352
+ (0, globals_1.describe)('compareByOrderBys', () => {
353
+ (0, globals_1.describe)('comparison', () => {
354
+ globals_1.it.each([
355
+ // nulls compare with 0
356
+ [entity_1.OrderByOrdering.DESCENDING, null, 0, -1],
357
+ [entity_1.OrderByOrdering.ASCENDING, null, 0, 1],
358
+ [entity_1.OrderByOrdering.DESCENDING, 0, null, 1],
359
+ [entity_1.OrderByOrdering.ASCENDING, 0, null, -1],
360
+ // nulls compare with nulls
361
+ [entity_1.OrderByOrdering.DESCENDING, null, null, 0],
362
+ [entity_1.OrderByOrdering.ASCENDING, null, null, 0],
363
+ // nulls compare with -1
364
+ [entity_1.OrderByOrdering.DESCENDING, null, -1, -1],
365
+ [entity_1.OrderByOrdering.ASCENDING, null, -1, 1],
366
+ [entity_1.OrderByOrdering.DESCENDING, -1, null, 1],
367
+ [entity_1.OrderByOrdering.ASCENDING, -1, null, -1],
368
+ // basic compares
369
+ [entity_1.OrderByOrdering.ASCENDING, 'a', 'b', -1],
370
+ [entity_1.OrderByOrdering.ASCENDING, 'b', 'a', 1],
371
+ [entity_1.OrderByOrdering.DESCENDING, 'a', 'b', 1],
372
+ [entity_1.OrderByOrdering.DESCENDING, 'b', 'a', -1],
373
+ ])('case (%p; %p; %p)', (order, v1, v2, expectedResult) => {
374
+ (0, globals_1.expect)(StubDatabaseAdapter_1.StubDatabaseAdapter['compareByOrderBys']([
375
+ {
376
+ columnName: 'hello',
377
+ order,
378
+ },
379
+ ], {
380
+ hello: v1,
381
+ }, {
382
+ hello: v2,
383
+ })).toEqual(expectedResult);
384
+ });
385
+ (0, globals_1.it)('works for empty', () => {
386
+ (0, globals_1.expect)(StubDatabaseAdapter_1.StubDatabaseAdapter['compareByOrderBys']([], {
387
+ hello: 'test',
388
+ }, {
389
+ hello: 'blah',
390
+ })).toEqual(0);
391
+ });
392
+ });
393
+ (0, globals_1.describe)('recursing', () => {
394
+ (0, globals_1.expect)(StubDatabaseAdapter_1.StubDatabaseAdapter['compareByOrderBys']([
395
+ {
396
+ columnName: 'hello',
397
+ order: entity_1.OrderByOrdering.ASCENDING,
398
+ },
399
+ {
400
+ columnName: 'world',
401
+ order: entity_1.OrderByOrdering.ASCENDING,
402
+ },
403
+ ], {
404
+ hello: 'a',
405
+ world: 1,
406
+ }, {
407
+ hello: 'a',
408
+ world: 2,
409
+ })).toEqual(-1);
410
+ });
411
+ });
412
+ });
413
+ const UUIDV7_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
414
+ /**
415
+ * Returns the Date object encoded in the first 48 bits of the given UUIDv7.
416
+ * @throws TypeError if the UUID is not version 7
417
+ */
418
+ function getTimeFromUUIDv7(uuid) {
419
+ if (!UUIDV7_REGEX.test(uuid)) {
420
+ throw new TypeError(`UUID must be version 7 to get its timestamp`);
421
+ }
422
+ // The first 48 bits = 12 hex characters of the UUID encode the timestamp in big endian
423
+ const hexCharacters = uuid.replaceAll('-', '').split('', 12);
424
+ const milliseconds = hexCharacters.reduce((milliseconds, character) => milliseconds * 16 + parseInt(character, 16), 0);
425
+ return new Date(milliseconds);
426
+ }
427
+ //# sourceMappingURL=StubDatabaseAdapter-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StubDatabaseAdapter-test.js","sourceRoot":"","sources":["../../../src/__tests__/StubDatabaseAdapter-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const entity_1 = require("@expo/entity");
4
+ const globals_1 = require("@jest/globals");
5
+ const TSMockitoExtensions_1 = require("../TSMockitoExtensions");
6
+ (0, globals_1.describe)(TSMockitoExtensions_1.deepEqualEntityAware, () => {
7
+ (0, globals_1.it)('should return a DeepEqualEntityAwareMatcher', () => {
8
+ const actual = (0, TSMockitoExtensions_1.deepEqualEntityAware)('foo');
9
+ (0, globals_1.expect)(actual).toBeInstanceOf(TSMockitoExtensions_1.DeepEqualEntityAwareMatcher);
10
+ (0, globals_1.expect)(actual.toString()).toBe('deepEqualEntityAware(foo)');
11
+ const actual2 = (0, TSMockitoExtensions_1.deepEqualEntityAware)(['bar']);
12
+ (0, globals_1.expect)(actual2.toString()).toBe('deepEqualEntityAware([bar])');
13
+ });
14
+ });
15
+ (0, globals_1.describe)(TSMockitoExtensions_1.isEqualWithEntityAware, () => {
16
+ (0, globals_1.it)('works for basic cases', () => {
17
+ (0, globals_1.expect)((0, TSMockitoExtensions_1.isEqualWithEntityAware)('foo', 'foo')).toBe(true);
18
+ (0, globals_1.expect)((0, TSMockitoExtensions_1.isEqualWithEntityAware)('foo', 'bar')).toBe(false);
19
+ const obj1 = { foo: 'bar' };
20
+ const obj2 = { foo: 'bar' };
21
+ (0, globals_1.expect)((0, TSMockitoExtensions_1.isEqualWithEntityAware)(obj1, obj2)).toBe(true);
22
+ });
23
+ (0, globals_1.it)('works for nested matchers', () => {
24
+ const obj1 = { foo: (0, TSMockitoExtensions_1.deepEqualEntityAware)('bar') };
25
+ const obj2 = { foo: 'bar' };
26
+ (0, globals_1.expect)((0, TSMockitoExtensions_1.isEqualWithEntityAware)(obj1, obj2)).toBe(true);
27
+ });
28
+ (0, globals_1.it)('works for SingleFieldHolder', () => {
29
+ const singleFieldHolder1 = new entity_1.SingleFieldHolder('foo');
30
+ const singleFieldHolder2 = new entity_1.SingleFieldHolder('foo');
31
+ const singleFieldHolder3 = new entity_1.SingleFieldHolder('bar');
32
+ (0, globals_1.expect)((0, TSMockitoExtensions_1.isEqualWithEntityAware)(singleFieldHolder1, singleFieldHolder2)).toBe(true);
33
+ (0, globals_1.expect)((0, TSMockitoExtensions_1.isEqualWithEntityAware)(singleFieldHolder1, singleFieldHolder3)).toBe(false);
34
+ });
35
+ (0, globals_1.it)('works for SingleFieldValueHolder', () => {
36
+ const singleFieldValueHolder1 = new entity_1.SingleFieldValueHolder('foo');
37
+ const singleFieldValueHolder2 = new entity_1.SingleFieldValueHolder('foo');
38
+ const singleFieldValueHolder3 = new entity_1.SingleFieldValueHolder('bar');
39
+ (0, globals_1.expect)((0, TSMockitoExtensions_1.isEqualWithEntityAware)(singleFieldValueHolder1, singleFieldValueHolder2)).toBe(true);
40
+ (0, globals_1.expect)((0, TSMockitoExtensions_1.isEqualWithEntityAware)(singleFieldValueHolder1, singleFieldValueHolder3)).toBe(false);
41
+ });
42
+ (0, globals_1.it)('works for SerializableKeyMap', () => {
43
+ const map1 = new entity_1.SingleFieldValueHolderMap(new Map([[new entity_1.SingleFieldValueHolder('foo'), 'bar']]));
44
+ const map2 = new entity_1.SingleFieldValueHolderMap(new Map([[new entity_1.SingleFieldValueHolder('foo'), 'bar']]));
45
+ const map3 = new entity_1.SingleFieldValueHolderMap(new Map([[new entity_1.SingleFieldValueHolder('foo2'), 'bar']]));
46
+ (0, globals_1.expect)((0, TSMockitoExtensions_1.isEqualWithEntityAware)(map1, map2)).toBe(true);
47
+ (0, globals_1.expect)((0, TSMockitoExtensions_1.isEqualWithEntityAware)(map1, map3)).toBe(false);
48
+ });
49
+ });
50
+ //# sourceMappingURL=TSMockitoExtensions-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TSMockitoExtensions-test.js","sourceRoot":"","sources":["../../../src/__tests__/TSMockitoExtensions-test.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.createUnitTestEntityCompanionProvider = void 0;
7
4
  const entity_1 = require("@expo/entity");
8
5
  const StubCacheAdapter_1 = require("./StubCacheAdapter");
9
- const StubDatabaseAdapterProvider_1 = __importDefault(require("./StubDatabaseAdapterProvider"));
10
- const StubQueryContextProvider_1 = __importDefault(require("./StubQueryContextProvider"));
11
- const queryContextProvider = new StubQueryContextProvider_1.default();
6
+ const StubDatabaseAdapterProvider_1 = require("./StubDatabaseAdapterProvider");
7
+ const StubQueryContextProvider_1 = require("./StubQueryContextProvider");
8
+ const queryContextProvider = new StubQueryContextProvider_1.StubQueryContextProvider();
12
9
  /**
13
10
  * Entity companion provider for use in unit tests. All database and cache implementations
14
11
  * are replaced with in-memory simulations.
@@ -18,7 +15,7 @@ const createUnitTestEntityCompanionProvider = (metricsAdapter = new entity_1.NoO
18
15
  [
19
16
  'postgres',
20
17
  {
21
- adapterProvider: new StubDatabaseAdapterProvider_1.default(),
18
+ adapterProvider: new StubDatabaseAdapterProvider_1.StubDatabaseAdapterProvider(),
22
19
  queryContextProvider,
23
20
  },
24
21
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"createUnitTestEntityCompanionProvider.js","sourceRoot":"","sources":["../src/createUnitTestEntityCompanionProvider.ts"],"names":[],"mappings":";;;;;;AAAA,yCAIsB;AAEtB,yDAA+E;AAC/E,gGAAwE;AACxE,0FAAkE;AAElE,MAAM,oBAAoB,GAAG,IAAI,kCAAwB,EAAE,CAAC;AAE5D;;;GAGG;AACI,MAAM,qCAAqC,GAAG,CACnD,iBAAwC,IAAI,iCAAwB,EAAE,EAC7C,EAAE;IAC3B,OAAO,IAAI,gCAAuB,CAChC,cAAc,EACd,IAAI,GAAG,CAAC;QACN;YACE,UAAU;YACV;gBACE,eAAe,EAAE,IAAI,qCAA2B,EAAE;gBAClD,oBAAoB;aACrB;SACF;KACF,CAAC,EACF,IAAI,GAAG,CAAC;QACN;YACE,OAAO;YACP;gBACE,oBAAoB,EAAE,IAAI,4DAAyC,EAAE;aACtE;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAvBW,QAAA,qCAAqC,yCAuBhD"}
1
+ {"version":3,"file":"createUnitTestEntityCompanionProvider.js","sourceRoot":"","sources":["../../src/createUnitTestEntityCompanionProvider.ts"],"names":[],"mappings":";;;AAAA,yCAIsB;AAEtB,yDAA+E;AAC/E,+EAA4E;AAC5E,yEAAsE;AAEtE,MAAM,oBAAoB,GAAG,IAAI,mDAAwB,EAAE,CAAC;AAE5D;;;GAGG;AACI,MAAM,qCAAqC,GAAG,CACnD,iBAAwC,IAAI,iCAAwB,EAAE,EAC7C,EAAE;IAC3B,OAAO,IAAI,gCAAuB,CAChC,cAAc,EACd,IAAI,GAAG,CAAC;QACN;YACE,UAAU;YACV;gBACE,eAAe,EAAE,IAAI,yDAA2B,EAAE;gBAClD,oBAAoB;aACrB;SACF;KACF,CAAC,EACF,IAAI,GAAG,CAAC;QACN;YACE,OAAO;YACP;gBACE,oBAAoB,EAAE,IAAI,4DAAyC,EAAE;aACtE;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAvBW,QAAA,qCAAqC,yCAuBhD"}