From 8d514b1c3bcd798e4e461dd87d1ef112c4a3c431 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Fri, 17 Nov 2023 17:52:53 +0100 Subject: [PATCH] Add tests for expired and unpublished broadcasts --- .../Broadcasts/BroadcastsOverlay.test.ts | 39 ++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/client/src/components/Notifications/Broadcasts/BroadcastsOverlay.test.ts b/client/src/components/Notifications/Broadcasts/BroadcastsOverlay.test.ts index 9c423edb6dd..c13a1d89674 100644 --- a/client/src/components/Notifications/Broadcasts/BroadcastsOverlay.test.ts +++ b/client/src/components/Notifications/Broadcasts/BroadcastsOverlay.test.ts @@ -9,15 +9,26 @@ import { type BroadcastNotification, useBroadcastsStore } from "@/stores/broadca const localVue = getLocalVue(true); const now = new Date(); -const inTwoMonths = new Date(now.setMonth(now.getMonth() + 2)); +const inTwoMonths = new Date(new Date(now).setMonth(now.getMonth() + 2)); -function generateBroadcastNotification(id: string): BroadcastNotification { +/** API date-time does not have timezone indicator and it's always UTC. */ +function toApiDate(date: Date): string { + return date.toISOString().replace("Z", ""); +} + +function generateBroadcastNotification( + id: string, + publicationTime?: Date, + expirationTime?: Date +): BroadcastNotification { + const publication_time = publicationTime ? toApiDate(publicationTime) : toApiDate(now); + const expiration_time = expirationTime ? toApiDate(expirationTime) : toApiDate(inTwoMonths); return { id: id, - create_time: now.toISOString(), - update_time: now.toISOString(), - publication_time: now.toISOString(), - expiration_time: inTwoMonths.toISOString(), + create_time: toApiDate(now), + update_time: toApiDate(now), + publication_time, + expiration_time, source: "testing", variant: "info", content: { @@ -78,4 +89,20 @@ describe("BroadcastsOverlay.vue", () => { expect(wrapper.findAll(".broadcast-message")).toHaveLength(1); expect(wrapper.find(".broadcast-message").text()).toContain("Test message 2"); }); + + it("should not render the broadcast when it has expired", async () => { + const expiredBroadcast = generateBroadcastNotification("expired", undefined, new Date(now)); + const wrapper = await mountBroadcastsOverlayWith([expiredBroadcast]); + + expect(wrapper.exists()).toBe(true); + expect(wrapper.html()).toBe(""); + }); + + it("should not render the broadcast when it has not been published yet", async () => { + const unpublishedBroadcast = generateBroadcastNotification("unpublished", new Date(inTwoMonths)); + const wrapper = await mountBroadcastsOverlayWith([unpublishedBroadcast]); + + expect(wrapper.exists()).toBe(true); + expect(wrapper.html()).toBe(""); + }); });