From 047ff3a56e5a85f9b00332d114c9b9598f2bc522 Mon Sep 17 00:00:00 2001 From: Brendan Chen Date: Sun, 2 Feb 2025 13:09:54 -0800 Subject: [PATCH] add test cases for the new functions --- ...UnoptimizedInMemoryRepositoryTests.test.ts | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/test/repositories/UnoptimizedInMemoryRepositoryTests.test.ts b/test/repositories/UnoptimizedInMemoryRepositoryTests.test.ts index 5983dfb..1ce76b1 100644 --- a/test/repositories/UnoptimizedInMemoryRepositoryTests.test.ts +++ b/test/repositories/UnoptimizedInMemoryRepositoryTests.test.ts @@ -1,4 +1,4 @@ -import { beforeEach, describe, expect, test } from "@jest/globals"; +import { beforeEach, describe, expect, jest, test } from "@jest/globals"; import { UnoptimizedInMemoryRepository } from "../../src/repositories/UnoptimizedInMemoryRepository"; import { generateMockEtas, @@ -226,14 +226,36 @@ describe("UnoptimizedInMemoryRepository", () => { }); describe("subscribeToEtaChanges", () => { - test("notifies listeners if etas has changed", async () => { + test("notifies listeners if etas have been added or changed", async () => { + const mockCallback = jest.fn(); // Jest mock function to simulate a listener + repository.subscribeToEtaChanges(mockCallback); + const mockEtas = generateMockEtas(); + for (const eta of mockEtas) { + await repository.addOrUpdateEta(eta); // Trigger changes in ETAs + } + + expect(mockCallback).toHaveBeenCalledTimes(mockEtas.length); + expect(mockCallback).toHaveBeenCalledWith(mockEtas[0]); // First notification + expect(mockCallback).toHaveBeenCalledWith(mockEtas[mockEtas.length - 1]); // Last notification }); }); describe("unsubscribeFromEtaChanges", () => { test("stops notifying listeners after etas have stopped changing", async () => { + const mockCallback = jest.fn(); // Jest mock function to simulate a listener + repository.subscribeToEtaChanges(mockCallback); + const mockEtas = generateMockEtas(); + await repository.addOrUpdateEta(mockEtas[0]); + + repository.unsubscribeFromEtaChanges(mockCallback); + + await repository.addOrUpdateEta(mockEtas[mockEtas.length - 1]); + + expect(mockCallback).toHaveBeenCalledTimes(1); + expect(mockCallback).toHaveBeenCalledWith(mockEtas[0]); // First notification + expect(mockCallback).not.toHaveBeenCalledWith(mockEtas[mockEtas.length - 1]); // Last notification }); });