123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557 |
- import {
- checkScore,
- createGame,
- getCurrentRound,
- getFirstSubmitter,
- getGameConfig,
- getGameCoords,
- getGenerators,
- getLinkedGame,
- getPlayers,
- getStatus,
- joinGame,
- linkGame,
- sendGuess,
- sendTimeout,
- } from "../domain/apiMethods";
- global.fetch = jest.fn();
- describe("apiMethods", () => {
- describe("getStatus", () => {
- it("gets status", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- json: () =>
- Promise.resolve({
- status: "healthy",
- version: "test",
- }),
- })
- );
- expect(await getStatus()).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("handles server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- expect(await getStatus()).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("handles thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- expect(await getStatus()).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- describe("checkScore", () => {
- it("checks score", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- json: () =>
- Promise.resolve({
- score: 1000,
- }),
- })
- );
- expect(await checkScore("point1", "point2")).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("throws on server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- await expect(checkScore("point1", "point2")).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- it("passes thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- await expect(checkScore("point1", "point2")).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- describe("getGenerators", () => {
- it("gets generators", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- json: () =>
- Promise.resolve({
- generators: [],
- }),
- })
- );
- expect(await getGenerators()).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("throws on server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- await expect(getGenerators()).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- it("passes thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- await expect(getGenerators()).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- describe("createGame", () => {
- it("creates game", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- json: () =>
- Promise.resolve({
- gameId: "test-game-id",
- }),
- })
- );
- expect(
- await createGame(
- "timer",
- "rounds",
- "countryLock",
- "generationMethod",
- "ruleSet"
- )
- ).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("throws on server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- await expect(
- createGame(
- "timer",
- "rounds",
- "countryLock",
- "generationMethod",
- "ruleSet"
- )
- ).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- it("passes thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- await expect(
- createGame(
- "timer",
- "rounds",
- "countryLock",
- "generationMethod",
- "ruleSet"
- )
- ).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- describe("getGameConfig", () => {
- it("gets game config", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- json: () =>
- Promise.resolve({
- config: "test-config",
- }),
- })
- );
- expect(await getGameConfig("test-game-id")).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("throws on server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- await expect(getGameConfig("test-game-id")).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- it("passes thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- await expect(getGameConfig("test-game-id")).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- describe("getGameCoords", () => {
- it("gets game coords", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- json: () =>
- Promise.resolve({
- coords: ["test-coord"],
- }),
- })
- );
- expect(await getGameCoords("test-game-id")).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("throws on server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- await expect(getGameCoords("test-game-id")).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- it("passes thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- await expect(getGameCoords("test-game-id")).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- describe("getPlayers", () => {
- it("gets game players", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- json: () =>
- Promise.resolve({
- players: ["test-player"],
- }),
- })
- );
- expect(await getPlayers("test-game-id")).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("throws on server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- await expect(getPlayers("test-game-id")).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- it("passes thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- await expect(getPlayers("test-game-id")).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- describe("getLinkedGame", () => {
- it("gets linked game", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- json: () =>
- Promise.resolve({
- linkedGame: ["test-linked-game-id"],
- }),
- })
- );
- expect(await getLinkedGame("test-game-id")).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("throws on server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- await expect(getLinkedGame("test-game-id")).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- it("passes thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- await expect(getLinkedGame("test-game-id")).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- describe("linkGame", () => {
- it("links game to another", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- })
- );
- expect(
- await linkGame("test-game-id", "test-linked-game-id")
- ).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("throws on server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- await expect(
- linkGame("test-game-id", "test-linked-game-id")
- ).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- it("passes thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- await expect(
- linkGame("test-game-id", "test-linked-game-id")
- ).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- describe("getFirstSubmitter", () => {
- it("gets first submmiter for a round", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- json: () =>
- Promise.resolve({
- first: "test-player",
- }),
- })
- );
- expect(
- await getFirstSubmitter("test-game-id", "round")
- ).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("returns null on server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- expect(await getFirstSubmitter("test-game-id", "round")).toBe(null);
- expect(global.fetch).toMatchSnapshot();
- });
- it("passes thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- await expect(
- getFirstSubmitter("test-game-id", "round")
- ).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- describe("joinGame", () => {
- it("joins game", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- json: () =>
- Promise.resolve({
- playerId: "test-player-id",
- }),
- })
- );
- expect(
- await joinGame("test-game-id", "test-player-name")
- ).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("throws on server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- await expect(
- joinGame("test-game-id", "test-player-name")
- ).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- it("passes thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- await expect(
- joinGame("test-game-id", "test-player-name")
- ).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- describe("getCurrentRound", () => {
- it("gets current round", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- json: () =>
- Promise.resolve({
- round: "test-round",
- }),
- })
- );
- expect(
- await getCurrentRound("test-game-id", "test-player-id")
- ).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("throws on server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- await expect(
- getCurrentRound("test-game-id", "test-player-id")
- ).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- it("passes thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- await expect(
- getCurrentRound("test-game-id", "test-player-id")
- ).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- describe("sendGuess", () => {
- it("sends a guess", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- json: () =>
- Promise.resolve({
- score: 1000,
- totalScore: 5000,
- }),
- })
- );
- expect(
- await sendGuess(
- "test-game-id",
- "test-player-id",
- "test-round",
- { lat: "lat", lng: "lng" },
- "test-time"
- )
- ).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("throws on server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- await expect(
- sendGuess(
- "test-game-id",
- "test-player-id",
- "test-round",
- { lat: "lat", lng: "lng" },
- "test-time"
- )
- ).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- it("passes thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- await expect(
- sendGuess(
- "test-game-id",
- "test-player-id",
- "test-round",
- { lat: "lat", lng: "lng" },
- "test-time"
- )
- ).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- describe("sendtimeout", () => {
- it("sends a timeout for the round", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: true,
- json: () =>
- Promise.resolve({
- score: 0,
- totalScore: 2000,
- }),
- })
- );
- expect(
- await sendTimeout("test-game-id", "test-player-id", "test-round")
- ).toMatchSnapshot();
- expect(global.fetch).toMatchSnapshot();
- });
- it("throws on server error", async () => {
- global.fetch.mockImplementation(() =>
- Promise.resolve({
- ok: false,
- statusText: "failed",
- })
- );
- await expect(
- sendTimeout("test-game-id", "test-player-id", "test-round")
- ).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- it("passes thrown error", async () => {
- global.fetch.mockImplementation(() => {
- throw new Error("error");
- });
- await expect(
- sendTimeout("test-game-id", "test-player-id", "test-round")
- ).rejects.toThrow();
- expect(global.fetch).toMatchSnapshot();
- });
- });
- });
|