@retroachievements/api
Version:
A well-tested library that lets you get achievement, user, and game data from RetroAchievements.
82 lines (72 loc) • 2.17 kB
text/typescript
import { http, HttpResponse } from "msw";
import { setupServer } from "msw/node";
import { apiBaseUrl } from "../utils/internal";
import { buildAuthorization } from "../utils/public";
import { getUserCompletionProgress } from "./getUserCompletionProgress";
import type { GetUserCompletionProgressResponse } from "./models";
const server = setupServer();
describe("Function: getUserCompletionProgress", () => {
// MSW Setup
beforeAll(() => server.listen());
afterEach(() => server.resetHandlers());
afterAll(() => server.close());
it("is defined #sanity", () => {
// ASSERT
expect(getUserCompletionProgress).toBeDefined();
});
it("retrieves completion progress by username", async () => {
// ARRANGE
const authorization = buildAuthorization({
username: "mockUserName",
webApiKey: "mockWebApiKey",
});
const mockResponse: GetUserCompletionProgressResponse = {
Count: 1,
Total: 1,
Results: [
{
GameID: 680,
Title: "Game & Watch Gallery",
ImageIcon: "/Images/042952.png",
ConsoleID: 4,
ConsoleName: "Game Boy",
MaxPossible: 27,
NumAwarded: 8,
NumAwardedHardcore: 8,
MostRecentAwardedDate: "2022-07-26T23:56:15+00:00",
HighestAwardKind: null,
HighestAwardDate: null,
},
],
};
server.use(
http.get(`${apiBaseUrl}/API_GetUserCompletionProgress.php`, () =>
HttpResponse.json(mockResponse)
)
);
// ACT
const response = await getUserCompletionProgress(authorization, {
username: "xelnia",
});
// ASSERT
expect(response).toEqual({
count: 1,
total: 1,
results: [
{
gameId: 680,
title: "Game & Watch Gallery",
imageIcon: "/Images/042952.png",
consoleId: 4,
consoleName: "Game Boy",
maxPossible: 27,
numAwarded: 8,
numAwardedHardcore: 8,
mostRecentAwardedDate: "2022-07-26T23:56:15+00:00",
highestAwardKind: null,
highestAwardDate: null,
},
],
});
});
});