import request from "../../../app/tests/request"; import { A_USER_BEARER, validBearerWithNoTeam, } from "../../../utils/tests/jwtUtils"; import { ANOTHER_USER_ID, A_SUGGESTION_ID, A_USER_ID, SOME_NEWER_SUGGESTION_ID, } from "../../../utils/tests/testData"; import withDatabase from "../../../utils/tests/withDatabase"; import { persistANewerSuggestion, persistASuggestion, } from "../post/postSuggestions.driver"; describe("GET /suggestions", () => { withDatabase(); it("Given wrong authorization token Then returns unauthorized", async () => { const response = await request .get("/suggestions") .set("Authorization", `Bearer SOME_FAKE_BEARER_TOKEN`); expect(response.status).toBe(401); }); it("Given user is not part of the team Then return not found", async () => { const response = await request .get("/suggestions") .set("Authorization", validBearerWithNoTeam()); expect(response.status).toEqual(403); }); it("Given no suggestions Then returns empty state", async () => { const response = await request .get("/suggestions") .set("Authorization", A_USER_BEARER); expect(response.status).toEqual(200); expect(response.body).toMatchObject({ lastId: null, }); }); it("Given a suggestion Then return correctly", async () => { await persistASuggestion(A_USER_ID); const response = await request .get("/suggestions") .set("Authorization", A_USER_BEARER); expect(response.status).toEqual(200); expect(response.body).toMatchObject({ lastId: A_SUGGESTION_ID, }); }); it("Given few suggestion Then return the timestamp of the last one", async () => { await persistASuggestion(A_USER_ID); await persistANewerSuggestion(A_USER_ID); const response = await request .get("/suggestions") .set("Authorization", A_USER_BEARER); expect(response.status).toEqual(200); expect(response.body).toMatchObject({ lastId: SOME_NEWER_SUGGESTION_ID, }); }); it("Given a suggestion from another person Then this suggested is not taken into account", async () => { await persistASuggestion(ANOTHER_USER_ID); const response = await request .get("/suggestions") .set("Authorization", A_USER_BEARER); expect(response.status).toEqual(200); expect(response.body).toMatchObject({ lastId: null, }); }); });