Reorganize tests based on functions

This commit is contained in:
2025-10-21 16:22:05 -07:00
parent 4db517d4c0
commit 91ac397c75

View File

@@ -187,47 +187,66 @@ describe("UnoptimizedInMemoryRepository", () => {
}); });
}); });
describe("ETA update events", () => { describe("on/addListener", () => {
test("notifies listeners if etas have been added or changed", async () => { test("notifies listeners if etas have been added or changed", async () => {
const mockCallback = jest.fn(); // Jest mock function to simulate a listener const mockListener = jest.fn();
repository.on(ShuttleRepositoryEvent.ETA_UPDATED, mockCallback); repository.on(ShuttleRepositoryEvent.ETA_UPDATED, mockListener);
const mockEtas = generateMockEtas(); const mockEtas = generateMockEtas();
for (const eta of mockEtas) { for (const eta of mockEtas) {
await repository.addOrUpdateEta(eta); // Trigger changes in ETAs await repository.addOrUpdateEta(eta);
} }
expect(mockCallback).toHaveBeenCalledTimes(mockEtas.length); expect(mockListener).toHaveBeenCalledTimes(mockEtas.length);
expect(mockCallback).toHaveBeenCalledWith(mockEtas[0]); // First notification expect(mockListener).toHaveBeenCalledWith(mockEtas[0]); // First notification
expect(mockCallback).toHaveBeenCalledWith(mockEtas[mockEtas.length - 1]); // Last notification expect(mockListener).toHaveBeenCalledWith(mockEtas[mockEtas.length - 1]); // Last notification
}); });
test("does not notify listener if removed", async () => {
const mockListener = jest.fn();
repository.on(ShuttleRepositoryEvent.ETA_UPDATED, mockListener);
const mockEtas = generateMockEtas();
repository.off(ShuttleRepositoryEvent.ETA_UPDATED, mockListener);
await repository.addOrUpdateEta(mockEtas[0]);
expect(mockListener).toHaveBeenCalledTimes(1);
});
});
describe("off/removeListener", () => {
test("stops notifying listeners after etas have stopped changing", async () => { test("stops notifying listeners after etas have stopped changing", async () => {
const mockCallback = jest.fn(); // Jest mock function to simulate a listener const mockListener = jest.fn(); // Jest mock function to simulate a listener
repository.on(ShuttleRepositoryEvent.ETA_UPDATED, mockCallback); repository.on(ShuttleRepositoryEvent.ETA_UPDATED, mockListener);
const mockEtas = generateMockEtas(); const mockEtas = generateMockEtas();
await repository.addOrUpdateEta(mockEtas[0]); await repository.addOrUpdateEta(mockEtas[0]);
repository.off(ShuttleRepositoryEvent.ETA_UPDATED, mockCallback); repository.off(ShuttleRepositoryEvent.ETA_UPDATED, mockListener);
await repository.addOrUpdateEta(mockEtas[mockEtas.length - 1]); await repository.addOrUpdateEta(mockEtas[mockEtas.length - 1]);
expect(mockCallback).toHaveBeenCalledTimes(1); expect(mockListener).toHaveBeenCalledTimes(1);
expect(mockCallback).toHaveBeenCalledWith(mockEtas[0]); // First notification expect(mockListener).toHaveBeenCalledWith(mockEtas[0]); // First notification
expect(mockCallback).not.toHaveBeenCalledWith(mockEtas[mockEtas.length - 1]); // Last notification expect(mockListener).not.toHaveBeenCalledWith(mockEtas[mockEtas.length - 1]); // Last notification
}); });
test("does nothing if the listener doesn't exist", async () => { test("does not remove listener if wrong reference", async () => {
const mockCallback = jest.fn(); const mockListener = jest.fn();
repository.on(ShuttleRepositoryEvent.ETA_UPDATED, mockCallback); repository.on(ShuttleRepositoryEvent.ETA_UPDATED, mockListener);
const mockEtas = generateMockEtas(); const mockEtas = generateMockEtas();
repository.off(ShuttleRepositoryEvent.ETA_UPDATED, () => {}); repository.off(ShuttleRepositoryEvent.ETA_UPDATED, () => {});
await repository.addOrUpdateEta(mockEtas[0]); await repository.addOrUpdateEta(mockEtas[0]);
expect(mockCallback).toHaveBeenCalledTimes(1);
expect(mockListener).toHaveBeenCalledTimes(1);
expect(mockListener).toHaveBeenCalledWith(mockEtas[0]);
}); });
})
describe("ETA update events", () => {
}); });
describe("getOrderedStopByRouteAndStopId", () => { describe("getOrderedStopByRouteAndStopId", () => {