mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 07:50:31 +00:00
Reorganize tests based on functions
This commit is contained in:
@@ -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", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user