Skip to content

Commit 910a4bc

Browse files
committed
test: make CRUD retry invariant deterministic
1 parent 80de36a commit 910a4bc

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

tests/crud.test.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3585,12 +3585,20 @@ describe('Order of get/create', () => {
35853585
let shouldError = true;
35863586
const createCalls: BasicValue[] = [];
35873587
const updateCalls: BasicValue[] = [];
3588+
let resolveFirstCreate!: () => void;
3589+
let resolveRetriedCreate!: () => void;
3590+
let resolveUpdate!: () => void;
3591+
const firstCreate = new Promise<void>((resolve) => (resolveFirstCreate = resolve));
3592+
const retriedCreate = new Promise<void>((resolve) => (resolveRetriedCreate = resolve));
3593+
const update = new Promise<void>((resolve) => (resolveUpdate = resolve));
35883594
const obs$ = shape.makeObservable({
35893595
create: async (input: BasicValue) => {
35903596
createCalls.push(clone(input));
35913597
if (shouldError) {
3598+
resolveFirstCreate();
35923599
throw new Error(`${shape.name} create failed`);
35933600
}
3601+
resolveRetriedCreate();
35943602
return {
35953603
...input,
35963604
createdAt: 2,
@@ -3599,6 +3607,7 @@ describe('Order of get/create', () => {
35993607
},
36003608
update: async (input: BasicValue) => {
36013609
updateCalls.push(clone(input));
3610+
resolveUpdate();
36023611
return input;
36033612
},
36043613
onError: () => {},
@@ -3614,7 +3623,7 @@ describe('Order of get/create', () => {
36143623

36153624
shape.insert(obs$);
36163625

3617-
await promiseTimeout(10);
3626+
await firstCreate;
36183627

36193628
expect(createCalls).toEqual([{ id: '1', test: 'hi' }]);
36203629
expect(updateCalls).toEqual([]);
@@ -3624,7 +3633,8 @@ describe('Order of get/create', () => {
36243633

36253634
shouldError = false;
36263635

3627-
await promiseTimeout(125);
3636+
await Promise.all([retriedCreate, update]);
3637+
await promiseTimeout(0);
36283638

36293639
expect(createCalls).toEqual([
36303640
{ id: '1', test: 'hi' },

0 commit comments

Comments
 (0)