From 06451c88d176c1e7e9cc7a7d70937c5a4c55089a Mon Sep 17 00:00:00 2001 From: Alec Jacobs Date: Mon, 2 Oct 2023 12:14:41 -0700 Subject: [PATCH] test(backend-tasks): refine tests to be more explicit Signed-off-by: Alec Jacobs --- .../src/tasks/TaskWorker.test.ts | 43 +++++++++++++------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/packages/backend-tasks/src/tasks/TaskWorker.test.ts b/packages/backend-tasks/src/tasks/TaskWorker.test.ts index 4e1e6dc23b..efad4e649b 100644 --- a/packages/backend-tasks/src/tasks/TaskWorker.test.ts +++ b/packages/backend-tasks/src/tasks/TaskWorker.test.ts @@ -400,7 +400,9 @@ describe('TaskWorker', () => { await worker.tryReleaseTask('ticket', initialSettings); // grab initial row for comparisons later - const initialRow = (await knex(DB_TASKS_TABLE))[0]; + const rowAfterClaimAndRelease = ( + await knex(DB_TASKS_TABLE) + )[0]; const settings: TaskSettingsV2 = { ...initialSettings, @@ -409,11 +411,20 @@ describe('TaskWorker', () => { await worker.persistTask(settings); const row1 = (await knex(DB_TASKS_TABLE))[0]; + const rowAfterClaimAndReleaseNextStartAt = DateTime.fromJSDate( + new Date(rowAfterClaimAndRelease.next_run_start_at), + ); + const row1NextStartAt = DateTime.fromJSDate( + new Date(row1.next_run_start_at), + ); + const now = DateTime.now(); expect( - new Date(row1.next_run_start_at) < - new Date(initialRow.next_run_start_at), - ).toBeTruthy(); // ensure that next start at is sooner than initial - expect(new Date(row1.next_run_start_at) > new Date()).toBeTruthy(); // ensure that next start at is later than now + rowAfterClaimAndReleaseNextStartAt.diff(row1NextStartAt).as('minutes'), + ).toBeCloseTo(60, 1); // ensure that next start at is sooner than initial by one hour + expect(row1NextStartAt.diff(now).as('minutes')).toBeCloseTo(60, 1); // ensure that next start at is later than now by one hour + expect( + rowAfterClaimAndReleaseNextStartAt.diff(now).as('minutes'), + ).toBeCloseTo(120, 1); const settings2 = { ...settings, @@ -451,7 +462,9 @@ describe('TaskWorker', () => { await worker.tryReleaseTask('ticket', initialSettings); // grab initial row for comparisons later - const initialRow = (await knex(DB_TASKS_TABLE))[0]; + const rowAfterClaimAndRelease = ( + await knex(DB_TASKS_TABLE) + )[0]; const settings: TaskSettingsV2 = { ...initialSettings, @@ -460,14 +473,20 @@ describe('TaskWorker', () => { await worker.persistTask(settings); const row1 = (await knex(DB_TASKS_TABLE))[0]; + const rowAfterClaimAndReleaseNextStartAt = DateTime.fromJSDate( + new Date(rowAfterClaimAndRelease.next_run_start_at), + ); + const row1NextStartAt = DateTime.fromJSDate( + new Date(row1.next_run_start_at), + ); + const now = DateTime.now(); expect( - new Date(row1.next_run_start_at) < - new Date(initialRow.next_run_start_at), - ).toBeTruthy(); // ensure that next start at is sooner than initial + rowAfterClaimAndReleaseNextStartAt.diff(row1NextStartAt).as('minutes'), + ).toBeCloseTo(62, 1); // ensure that next start at is sooner than initial by one hour, plus the 2 minute delay (set my tryReleaseTask) + expect(row1NextStartAt.diff(now).as('minutes')).toBeCloseTo(60, 1); // ensure that next start at is later than now by one hour (2 minute delay doesn't take effect here) expect( - new Date(row1.next_run_start_at) > - DateTime.now().plus({ minutes: 3 }).toJSDate(), - ).toBeTruthy(); // ensure that next start at is later than initial delay start time since next run at should be an hour from now + rowAfterClaimAndReleaseNextStartAt.diff(now).as('minutes'), + ).toBeCloseTo(122, 1); // includes 2 minute start delay (which is persisted from tryReleaseTask) const settings2 = { ...settings,