import request from "../../../app/tests/request"; import { ANOTHER_USER_ID, A_USER_ID, SOME_DATE, SOME_NEWER_DATE, } from "../../../utils/tests/testData"; import withDatabase from "../../../utils/tests/withDatabase"; import { asDateString } from "./getOverview.driver"; import { persistANewerSuggestion, persistASuggestion, } from "../../suggestions/post/postSuggestions.driver"; import { A_USER_BEARER } from "../../../utils/tests/jwtUtils"; describe("GET /overview", () => { withDatabase(); it("Given no data Then return empty values", async () => { const response = await request .get("/overview") .set("Authorization", A_USER_BEARER); expect(response.status).toEqual(200); expect(response.body).toMatchObject({ users: [], total: 0, }); }); it("Given a suggestion from a user Then return the aggregated total correctly", async () => { await persistASuggestion(); const response = await request .get("/overview") .set("Authorization", A_USER_BEARER); expect(response.status).toEqual(200); expect(response.body).toMatchObject({ users: [ { user: A_USER_ID, total: 1, lastUpdated: asDateString(SOME_DATE), }, ], total: 1, }); }); it("Given some suggestions from a user Then return the aggregated total correctly", async () => { await persistASuggestion(); await persistANewerSuggestion(); const response = await request .get("/overview") .set("Authorization", A_USER_BEARER); expect(response.status).toEqual(200); expect(response.body).toMatchObject({ users: [ { user: A_USER_ID, total: 2, lastUpdated: asDateString(SOME_NEWER_DATE), }, ], total: 2, }); }); it("Given suggestions from multiple users Then return the aggregated total correctly", async () => { await persistASuggestion(); await persistANewerSuggestion(ANOTHER_USER_ID); const response = await request .get("/overview") .set("Authorization", A_USER_BEARER); expect(response.status).toEqual(200); expect(response.body).toMatchObject({ users: expect.arrayContaining([ { user: A_USER_ID, total: 1, lastUpdated: asDateString(SOME_DATE), }, { user: ANOTHER_USER_ID, total: 1, lastUpdated: asDateString(SOME_NEWER_DATE), }, ]) as unknown, total: 2, }); }); });