@powersync/service-core-tests 0.15.0 → 0.15.2

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 (28) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/test-utils/general-utils.d.ts +13 -1
  3. package/dist/test-utils/general-utils.js +30 -1
  4. package/dist/test-utils/general-utils.js.map +1 -1
  5. package/dist/test-utils/stream_utils.js +2 -2
  6. package/dist/test-utils/stream_utils.js.map +1 -1
  7. package/dist/tests/register-compacting-tests.js +266 -257
  8. package/dist/tests/register-compacting-tests.js.map +1 -1
  9. package/dist/tests/register-data-storage-checkpoint-tests.js +36 -57
  10. package/dist/tests/register-data-storage-checkpoint-tests.js.map +1 -1
  11. package/dist/tests/register-data-storage-data-tests.js +839 -863
  12. package/dist/tests/register-data-storage-data-tests.js.map +1 -1
  13. package/dist/tests/register-data-storage-parameter-tests.js +228 -236
  14. package/dist/tests/register-data-storage-parameter-tests.js.map +1 -1
  15. package/dist/tests/register-parameter-compacting-tests.js +81 -89
  16. package/dist/tests/register-parameter-compacting-tests.js.map +1 -1
  17. package/dist/tests/register-sync-tests.js +468 -462
  18. package/dist/tests/register-sync-tests.js.map +1 -1
  19. package/package.json +3 -3
  20. package/src/test-utils/general-utils.ts +41 -2
  21. package/src/test-utils/stream_utils.ts +2 -2
  22. package/src/tests/register-compacting-tests.ts +279 -270
  23. package/src/tests/register-data-storage-checkpoint-tests.ts +36 -57
  24. package/src/tests/register-data-storage-data-tests.ts +673 -770
  25. package/src/tests/register-data-storage-parameter-tests.ts +245 -257
  26. package/src/tests/register-parameter-compacting-tests.ts +84 -92
  27. package/src/tests/register-sync-tests.ts +375 -391
  28. package/tsconfig.tsbuildinfo +1 -1
@@ -39,18 +39,15 @@ bucket_definitions:
39
39
  .watchCheckpointChanges({ user_id: 'user1', signal: abortController.signal })
40
40
  [Symbol.asyncIterator]();
41
41
 
42
- await bucketStorage.startBatch(test_utils.BATCH_OPTIONS, async (batch) => {
43
- await batch.markAllSnapshotDone('1/1');
44
- });
42
+ await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
43
+ await writer.markAllSnapshotDone('1/1');
45
44
 
46
45
  const writeCheckpoint = await bucketStorage.createManagedWriteCheckpoint({
47
46
  heads: { '1': '5/0' },
48
47
  user_id: 'user1'
49
48
  });
50
49
 
51
- await bucketStorage.startBatch(test_utils.BATCH_OPTIONS, async (batch) => {
52
- await batch.keepalive('5/0');
53
- });
50
+ await writer.keepalive('5/0');
54
51
 
55
52
  const result = await iter.next();
56
53
  expect(result).toMatchObject({
@@ -82,9 +79,8 @@ bucket_definitions:
82
79
  );
83
80
  const bucketStorage = factory.getInstance(r.persisted_sync_rules!);
84
81
 
85
- await bucketStorage.startBatch(test_utils.BATCH_OPTIONS, async (batch) => {
86
- await batch.markAllSnapshotDone('1/1');
87
- });
82
+ await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
83
+ await writer.markAllSnapshotDone('1/1');
88
84
 
89
85
  const abortController = new AbortController();
90
86
  context.onTestFinished(() => abortController.abort());
@@ -92,9 +88,7 @@ bucket_definitions:
92
88
  .watchCheckpointChanges({ user_id: 'user1', signal: abortController.signal })
93
89
  [Symbol.asyncIterator]();
94
90
 
95
- await bucketStorage.startBatch(test_utils.BATCH_OPTIONS, async (batch) => {
96
- await batch.keepalive('5/0');
97
- });
91
+ await writer.keepalive('5/0');
98
92
 
99
93
  const result = await iter.next();
100
94
  expect(result).toMatchObject({
@@ -115,9 +109,7 @@ bucket_definitions:
115
109
  // We have to trigger a new keepalive after the checkpoint, at least to cover postgres storage.
116
110
  // This is what is effetively triggered with RouteAPI.createReplicationHead().
117
111
  // MongoDB storage doesn't explicitly need this anymore.
118
- await bucketStorage.startBatch(test_utils.BATCH_OPTIONS, async (batch) => {
119
- await batch.keepalive('6/0');
120
- });
112
+ await writer.keepalive('6/0');
121
113
 
122
114
  let result2 = await iter.next();
123
115
  if (result2.value?.base?.lsn == '5/0') {
@@ -154,9 +146,8 @@ bucket_definitions:
154
146
  const bucketStorage = factory.getInstance(r.persisted_sync_rules!);
155
147
  bucketStorage.setWriteCheckpointMode(storage.WriteCheckpointMode.CUSTOM);
156
148
 
157
- await bucketStorage.startBatch(test_utils.BATCH_OPTIONS, async (batch) => {
158
- await batch.markAllSnapshotDone('1/1');
159
- });
149
+ await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
150
+ await writer.markAllSnapshotDone('1/1');
160
151
 
161
152
  const abortController = new AbortController();
162
153
  context.onTestFinished(() => abortController.abort());
@@ -164,14 +155,12 @@ bucket_definitions:
164
155
  .watchCheckpointChanges({ user_id: 'user1', signal: abortController.signal })
165
156
  [Symbol.asyncIterator]();
166
157
 
167
- await bucketStorage.startBatch(test_utils.BATCH_OPTIONS, async (batch) => {
168
- await batch.addCustomWriteCheckpoint({
169
- checkpoint: 5n,
170
- user_id: 'user1'
171
- });
172
- await batch.flush();
173
- await batch.keepalive('5/0');
158
+ writer.addCustomWriteCheckpoint({
159
+ checkpoint: 5n,
160
+ user_id: 'user1'
174
161
  });
162
+ await writer.flush();
163
+ await writer.keepalive('5/0');
175
164
 
176
165
  const result = await iter.next();
177
166
  expect(result).toMatchObject({
@@ -203,9 +192,8 @@ bucket_definitions:
203
192
  const bucketStorage = factory.getInstance(r.persisted_sync_rules!);
204
193
  bucketStorage.setWriteCheckpointMode(storage.WriteCheckpointMode.CUSTOM);
205
194
 
206
- await bucketStorage.startBatch(test_utils.BATCH_OPTIONS, async (batch) => {
207
- await batch.markAllSnapshotDone('1/1');
208
- });
195
+ await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
196
+ await writer.markAllSnapshotDone('1/1');
209
197
 
210
198
  const abortController = new AbortController();
211
199
  context.onTestFinished(() => abortController.abort());
@@ -213,17 +201,15 @@ bucket_definitions:
213
201
  .watchCheckpointChanges({ user_id: 'user1', signal: abortController.signal })
214
202
  [Symbol.asyncIterator]();
215
203
 
216
- await bucketStorage.startBatch(test_utils.BATCH_OPTIONS, async (batch) => {
217
- // Flush to clear state
218
- await batch.flush();
204
+ // Flush to clear state
205
+ await writer.flush();
219
206
 
220
- await batch.addCustomWriteCheckpoint({
221
- checkpoint: 5n,
222
- user_id: 'user1'
223
- });
224
- await batch.flush();
225
- await batch.keepalive('5/0');
207
+ writer.addCustomWriteCheckpoint({
208
+ checkpoint: 5n,
209
+ user_id: 'user1'
226
210
  });
211
+ await writer.flush();
212
+ await writer.keepalive('5/0');
227
213
 
228
214
  const result = await iter.next();
229
215
  expect(result).toMatchObject({
@@ -255,9 +241,8 @@ bucket_definitions:
255
241
  const bucketStorage = factory.getInstance(r.persisted_sync_rules!);
256
242
  bucketStorage.setWriteCheckpointMode(storage.WriteCheckpointMode.CUSTOM);
257
243
 
258
- await bucketStorage.startBatch(test_utils.BATCH_OPTIONS, async (batch) => {
259
- await batch.markAllSnapshotDone('1/1');
260
- });
244
+ await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
245
+ await writer.markAllSnapshotDone('1/1');
261
246
 
262
247
  const abortController = new AbortController();
263
248
  context.onTestFinished(() => abortController.abort());
@@ -265,9 +250,7 @@ bucket_definitions:
265
250
  .watchCheckpointChanges({ user_id: 'user1', signal: abortController.signal })
266
251
  [Symbol.asyncIterator]();
267
252
 
268
- await bucketStorage.startBatch(test_utils.BATCH_OPTIONS, async (batch) => {
269
- await batch.keepalive('5/0');
270
- });
253
+ await writer.keepalive('5/0');
271
254
 
272
255
  const result = await iter.next();
273
256
  expect(result).toMatchObject({
@@ -280,14 +263,12 @@ bucket_definitions:
280
263
  }
281
264
  });
282
265
 
283
- await bucketStorage.startBatch(test_utils.BATCH_OPTIONS, async (batch) => {
284
- batch.addCustomWriteCheckpoint({
285
- checkpoint: 6n,
286
- user_id: 'user1'
287
- });
288
- await batch.flush();
289
- await batch.keepalive('6/0');
266
+ writer.addCustomWriteCheckpoint({
267
+ checkpoint: 6n,
268
+ user_id: 'user1'
290
269
  });
270
+ await writer.flush();
271
+ await writer.keepalive('6/0');
291
272
 
292
273
  let result2 = await iter.next();
293
274
  expect(result2).toMatchObject({
@@ -301,14 +282,12 @@ bucket_definitions:
301
282
  }
302
283
  });
303
284
 
304
- await bucketStorage.startBatch(test_utils.BATCH_OPTIONS, async (batch) => {
305
- batch.addCustomWriteCheckpoint({
306
- checkpoint: 7n,
307
- user_id: 'user1'
308
- });
309
- await batch.flush();
310
- await batch.keepalive('7/0');
285
+ writer.addCustomWriteCheckpoint({
286
+ checkpoint: 7n,
287
+ user_id: 'user1'
311
288
  });
289
+ await writer.flush();
290
+ await writer.keepalive('7/0');
312
291
 
313
292
  let result3 = await iter.next();
314
293
  expect(result3).toMatchObject({