add pokerogue-daily-api test coverage

This commit is contained in:
flx-sta 2024-10-09 09:29:15 -07:00
parent 594b761b72
commit bf4f79379d
1 changed files with 98 additions and 0 deletions

View File

@ -0,0 +1,98 @@
import type { GetDailyRankingsPageCountRequest, GetDailyRankingsRequest } from "#app/@types/PokerogueDailyApi";
import { PokerogueDailyApi } from "#app/plugins/api/pokerogue-daily-api";
import { getApiBaseUrl } from "#app/test/utils/testUtils";
import { ScoreboardCategory, type RankingEntry } from "#app/ui/daily-run-scoreboard";
import { http, HttpResponse } from "msw";
import { setupServer } from "msw/node";
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
const apiBase = getApiBaseUrl();
const dailyApi = new PokerogueDailyApi(apiBase);
const server = setupServer();
beforeAll(() => {
server.listen({ onUnhandledRequest: "error" });
});
afterAll(() => {
server.close();
});
afterEach(() => {
server.resetHandlers();
});
describe("Pokerogue Admin API", () => {
beforeEach(() => {
vi.spyOn(console, "warn");
});
describe("Get Seed", () => {
it("should return seed string on SUCCESS", async () => {
server.use(http.get(`${apiBase}/daily/seed`, () => HttpResponse.text("this-is-a-test-seed")));
const seed = await dailyApi.getSeed();
expect(seed).toBe("this-is-a-test-seed");
});
it("should return null and report a warning on ERROR", async () => {
server.use(http.get(`${apiBase}/daily/seed`, () => HttpResponse.error()));
const seed = await dailyApi.getSeed();
expect(seed).toBeNull();
expect(console.warn).toHaveBeenCalledWith("Could not get daily-run seed!", expect.any(Error));
});
});
describe("Get Rankings", () => {
const params: GetDailyRankingsRequest = {
category: ScoreboardCategory.DAILY,
};
it("should return ranking entries on SUCCESS", async () => {
const expectedRankings: RankingEntry[] = [
{ rank: 1, score: 999, username: "Player 1", wave: 200 },
{ rank: 2, score: 10, username: "Player 2", wave: 1 },
];
server.use(http.get(`${apiBase}/daily/rankings`, () => HttpResponse.json(expectedRankings)));
const rankings = await dailyApi.getRankings(params);
expect(rankings).toStrictEqual(expectedRankings);
});
it("should return null and report a warning on ERROR", async () => {
server.use(http.get(`${apiBase}/daily/rankings`, () => HttpResponse.error()));
const rankings = await dailyApi.getRankings(params);
expect(rankings).toBeNull();
expect(console.warn).toHaveBeenCalledWith("Could not get daily rankings!", expect.any(Error));
});
});
describe("Get Rankings Page Count", () => {
const params: GetDailyRankingsPageCountRequest = {
category: ScoreboardCategory.DAILY,
};
it("should return a number on SUCCESS", async () => {
server.use(http.get(`${apiBase}/daily/rankingpagecount`, () => HttpResponse.json(5)));
const pageCount = await dailyApi.getRankingsPageCount(params);
expect(pageCount).toBe(5);
});
it("should return 1 and report a warning on ERROR", async () => {
server.use(http.get(`${apiBase}/daily/rankingpagecount`, () => HttpResponse.error()));
const pageCount = await dailyApi.getRankingsPageCount(params);
expect(pageCount).toBe(1);
expect(console.warn).toHaveBeenCalledWith("Could not get daily rankings page count!", expect.any(Error));
});
});
});