From 4173219026aa0bd8384fa6bcd10a9b9dd1fc2192 Mon Sep 17 00:00:00 2001 From: Masha-kainos <256341953+Masha-kainos@users.noreply.github.com> Date: Mon, 27 Apr 2026 16:04:06 +0100 Subject: [PATCH 1/2] feature(1136): add stale reminders test coverage --- tests/models/TestReminder.ts | 2 +- tests/tests/api/OrderRemindersTest.spec.ts | 47 ++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/tests/models/TestReminder.ts b/tests/models/TestReminder.ts index bac14cd8..4d6b0e64 100644 --- a/tests/models/TestReminder.ts +++ b/tests/models/TestReminder.ts @@ -2,7 +2,7 @@ import { OrderStatusCode } from "./TestOrder"; export type UUID = string; -export type ReminderStatusCode = "SCHEDULED" | "QUEUED"; +export type ReminderStatusCode = "SCHEDULED" | "QUEUED" | "CANCELLED"; export interface ReminderModel { reminder_id: string; diff --git a/tests/tests/api/OrderRemindersTest.spec.ts b/tests/tests/api/OrderRemindersTest.spec.ts index cc4e81ae..2e008d66 100644 --- a/tests/tests/api/OrderRemindersTest.spec.ts +++ b/tests/tests/api/OrderRemindersTest.spec.ts @@ -12,6 +12,7 @@ const defaultIntent = OrderStatusTestData.DEFAULT_INTENT; test.describe("Order Reminders", { tag: ["@API", "@db"] }, () => { let orderUid: string; + let secondOrderUid: string; let patientUid: string; let nhsNumber: string; let birthDate: string; @@ -34,14 +35,27 @@ test.describe("Order Reminders", { tag: ["@API", "@db"] }, () => { ); orderUid = orderResult.order_uid; await testOrderDb.insertConsent(orderUid); + + const secondOrderResult = await testOrderDb.createTestOrder( + supplierId, + patientUid, + testCode, + originator, + ); + secondOrderUid = secondOrderResult.order_uid; + await testOrderDb.insertConsent(secondOrderUid); }); test.afterEach(async ({ testOrderDb, testRemindersDb }) => { await testOrderDb.deleteOrderStatusByUid(orderUid); + await testOrderDb.deleteOrderStatusByUid(secondOrderUid); await testOrderDb.deleteConsentByOrderUid(orderUid); + await testOrderDb.deleteConsentByOrderUid(secondOrderUid); await testOrderDb.deleteOrderByUid(orderUid); + await testOrderDb.deleteOrderByUid(secondOrderUid); await testOrderDb.deletePatientMapping(nhsNumber, birthDate); await testRemindersDb.deleteRemindersByOrderUid(orderUid); + await testRemindersDb.deleteRemindersByOrderUid(secondOrderUid); }); test( @@ -106,4 +120,37 @@ test.describe("Order Reminders", { tag: ["@API", "@db"] }, () => { expect(reminders.every(isValidReminder)).toBe(true); }, ); + + test( + "should cancel scheduled reminders when order status changes to received", + { tag: ["@API"] }, + async ({ orderStatusApi, testRemindersDb, lambdaInvoker }) => { + await orderStatusApi.updateOrderStatus( + orderStatusPayload(secondOrderUid, patientUid, defaultStatus, defaultIntent, { + businessStatus: { text: OrderStatusTestData.BUSINESS_STATUS_DISPATCHED }, + }), + buildHeaders(randomUUID()), + ); + + await testRemindersDb.updateReminderTriggeredAt(secondOrderUid, 1, 7); + await lambdaInvoker.invokeReminderDispatch(); + + await orderStatusApi.updateOrderStatus( + orderStatusPayload(secondOrderUid, patientUid, defaultStatus, defaultIntent, { + businessStatus: { text: OrderStatusTestData.BUSINESS_STATUS_RECEIVED_AT_LAB }, + }), + buildHeaders(randomUUID()), + ); + await lambdaInvoker.invokeReminderDispatch(); + + const remindersCountAfter = await testRemindersDb.getRemindersCountByOrderUid(secondOrderUid); + expect(remindersCountAfter).toBe(2); + expect( + await testRemindersDb.getReminderStatusByOrderUidAndReminderNumber(secondOrderUid, 1), + ).toBe("QUEUED"); + const secondReminderStatus = + await testRemindersDb.getReminderStatusByOrderUidAndReminderNumber(secondOrderUid, 2); + expect(secondReminderStatus).toBe("CANCELLED"); + }, + ); }); From 23efbaed231ef937e64a9550d0c77c29226731b9 Mon Sep 17 00:00:00 2001 From: Masha-kainos <256341953+Masha-kainos@users.noreply.github.com> Date: Mon, 27 Apr 2026 17:00:55 +0100 Subject: [PATCH 2/2] additional checks --- tests/tests/api/OrderRemindersTest.spec.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/tests/api/OrderRemindersTest.spec.ts b/tests/tests/api/OrderRemindersTest.spec.ts index 2e008d66..9f2905f7 100644 --- a/tests/tests/api/OrderRemindersTest.spec.ts +++ b/tests/tests/api/OrderRemindersTest.spec.ts @@ -151,6 +151,18 @@ test.describe("Order Reminders", { tag: ["@API", "@db"] }, () => { const secondReminderStatus = await testRemindersDb.getReminderStatusByOrderUidAndReminderNumber(secondOrderUid, 2); expect(secondReminderStatus).toBe("CANCELLED"); + + await testRemindersDb.updateReminderTriggeredAt(secondOrderUid, 1, 15); + await lambdaInvoker.invokeReminderDispatch(); + const remindersCountAfterSecondDispatch = + await testRemindersDb.getRemindersCountByOrderUid(secondOrderUid); + expect(remindersCountAfterSecondDispatch).toBe(2); + + await testRemindersDb.updateReminderTriggeredAt(secondOrderUid, 2, 15); + await lambdaInvoker.invokeReminderDispatch(); + const remindersCountAfterThirdDispatch = + await testRemindersDb.getRemindersCountByOrderUid(secondOrderUid); + expect(remindersCountAfterThirdDispatch).toBe(2); }, ); });