mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-03-28 12:38:43 +00:00
* start migrating Utils.apiFetch to api class * move dailyranking to api * use api in title-ui-handler * remove: Utils.apiFetch * migrate `updateSystemSavedata` to api * migrate clear session savedata to api * migrate updateAllSavedata to api * migrate `updateSessionSavedata` to api * rename `api` to `pokerogue-api` * migrate unlink discord to pokerogue-api * migrate unlink google to pokerogue-api * update pokerogue-api login * migrate register account to pokerogue-api * remove Utils.apiPost * reset overrides.ts * chore: cleanup * fix env.development * fix circular dependencies with api * fix gamedata verify missing await * fix daily api calls in daily-run-scorebard * fix discord-link request body being empty there was a double `toUrlSearchParams()` call involved * add pokerogue-api test coverge * add test-utils `getApiBaseUrl()` method * add pokerogue-admin-api test coverage * add pokerogue-account-api test coverage * add pokerogue-daily-api test coverage * add pokerogue-savedata-api test coverage * fix some test describes * add pokerogue-session-savedata-api test coverage * add pokerogue-system-savedata-api test coverage * fix tests * fix tryExportData thanks @MokaStitcher * chore: fix menu-ui-handlers.ts * fix admin-ui-handler (types) * extend test-coverage for admin-api * remove outdated code * skip some clowning-around-encounter tests if events are active this is not a permanent solution * Update src/system/game-data.ts Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com> * Revert "skip some clowning-around-encounter tests if events are active" This reverts commit a97dafe8b2479e9b2ddd49d4dc9710814d7c7b67. * mark `localServerUrl` and `apiUrl` as deprecated in `utils.ts` --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>
200 lines
6.5 KiB
TypeScript
200 lines
6.5 KiB
TypeScript
import type {
|
|
ClearSessionSavedataRequest,
|
|
ClearSessionSavedataResponse,
|
|
DeleteSessionSavedataRequest,
|
|
GetSessionSavedataRequest,
|
|
NewClearSessionSavedataRequest,
|
|
UpdateSessionSavedataRequest,
|
|
} from "#app/@types/PokerogueSessionSavedataApi";
|
|
import { PokerogueSessionSavedataApi } from "#app/plugins/api/pokerogue-session-savedata-api";
|
|
import type { SessionSaveData } from "#app/system/game-data";
|
|
import { getApiBaseUrl } from "#app/test/utils/testUtils";
|
|
import { http, HttpResponse } from "msw";
|
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const apiBase = getApiBaseUrl();
|
|
const sessionSavedataApi = new PokerogueSessionSavedataApi(apiBase);
|
|
const { server } = global;
|
|
|
|
afterEach(() => {
|
|
server.resetHandlers();
|
|
});
|
|
|
|
describe("Pokerogue Session Savedata API", () => {
|
|
beforeEach(() => {
|
|
vi.spyOn(console, "warn");
|
|
});
|
|
|
|
describe("Newclear", () => {
|
|
const params: NewClearSessionSavedataRequest = {
|
|
clientSessionId: "test-session-id",
|
|
slot: 3,
|
|
};
|
|
|
|
it("should return true on SUCCESS", async () => {
|
|
server.use(http.get(`${apiBase}/savedata/session/newclear`, () => HttpResponse.json(true)));
|
|
|
|
const success = await sessionSavedataApi.newclear(params);
|
|
|
|
expect(success).toBe(true);
|
|
});
|
|
|
|
it("should return false on FAILURE", async () => {
|
|
server.use(http.get(`${apiBase}/savedata/session/newclear`, () => HttpResponse.json(false)));
|
|
|
|
const success = await sessionSavedataApi.newclear(params);
|
|
|
|
expect(success).toBe(false);
|
|
});
|
|
|
|
it("should return false and report a warning on ERROR", async () => {
|
|
server.use(http.get(`${apiBase}/savedata/session/newclear`, () => HttpResponse.error()));
|
|
|
|
const success = await sessionSavedataApi.newclear(params);
|
|
|
|
expect(success).toBe(false);
|
|
expect(console.warn).toHaveBeenCalledWith("Could not newclear session!", expect.any(Error));
|
|
});
|
|
});
|
|
|
|
describe("Get ", () => {
|
|
const params: GetSessionSavedataRequest = {
|
|
clientSessionId: "test-session-id",
|
|
slot: 3,
|
|
};
|
|
|
|
it("should return session-savedata string on SUCCESS", async () => {
|
|
server.use(http.get(`${apiBase}/savedata/session/get`, () => HttpResponse.text("TEST SESSION SAVEDATA")));
|
|
|
|
const savedata = await sessionSavedataApi.get(params);
|
|
|
|
expect(savedata).toBe("TEST SESSION SAVEDATA");
|
|
});
|
|
|
|
it("should return null and report a warning on ERROR", async () => {
|
|
server.use(http.get(`${apiBase}/savedata/session/get`, () => HttpResponse.error()));
|
|
|
|
const savedata = await sessionSavedataApi.get(params);
|
|
|
|
expect(savedata).toBeNull();
|
|
expect(console.warn).toHaveBeenCalledWith("Could not get session savedata!", expect.any(Error));
|
|
});
|
|
});
|
|
|
|
describe("Update", () => {
|
|
const params: UpdateSessionSavedataRequest = {
|
|
clientSessionId: "test-session-id",
|
|
slot: 3,
|
|
secretId: 9876543321,
|
|
trainerId: 123456789,
|
|
};
|
|
|
|
it("should return an empty string on SUCCESS", async () => {
|
|
server.use(http.post(`${apiBase}/savedata/session/update`, () => HttpResponse.text(null)));
|
|
|
|
const error = await sessionSavedataApi.update(params, "UPDATED SESSION SAVEDATA");
|
|
|
|
expect(error).toBe("");
|
|
});
|
|
|
|
it("should return an error string on FAILURE", async () => {
|
|
server.use(http.post(`${apiBase}/savedata/session/update`, () => HttpResponse.text("Failed to update!")));
|
|
|
|
const error = await sessionSavedataApi.update(params, "UPDATED SESSION SAVEDATA");
|
|
|
|
expect(error).toBe("Failed to update!");
|
|
});
|
|
|
|
it("should return 'Unknown Error!' and report a warning on ERROR", async () => {
|
|
server.use(http.post(`${apiBase}/savedata/session/update`, () => HttpResponse.error()));
|
|
|
|
const error = await sessionSavedataApi.update(params, "UPDATED SESSION SAVEDATA");
|
|
|
|
expect(error).toBe("Unknown Error!");
|
|
expect(console.warn).toHaveBeenCalledWith("Could not update session savedata!", expect.any(Error));
|
|
});
|
|
});
|
|
|
|
describe("Delete", () => {
|
|
const params: DeleteSessionSavedataRequest = {
|
|
clientSessionId: "test-session-id",
|
|
slot: 3,
|
|
};
|
|
|
|
it("should return null on SUCCESS", async () => {
|
|
server.use(http.get(`${apiBase}/savedata/session/delete`, () => HttpResponse.text(null)));
|
|
|
|
const error = await sessionSavedataApi.delete(params);
|
|
|
|
expect(error).toBeNull();
|
|
});
|
|
|
|
it("should return an error string on FAILURE", async () => {
|
|
server.use(
|
|
http.get(`${apiBase}/savedata/session/delete`, () => new HttpResponse("Failed to delete!", { status: 400 }))
|
|
);
|
|
|
|
const error = await sessionSavedataApi.delete(params);
|
|
|
|
expect(error).toBe("Failed to delete!");
|
|
});
|
|
|
|
it("should return 'Unknown error' and report a warning on ERROR", async () => {
|
|
server.use(http.get(`${apiBase}/savedata/session/delete`, () => HttpResponse.error()));
|
|
|
|
const error = await sessionSavedataApi.delete(params);
|
|
|
|
expect(error).toBe("Unknown error");
|
|
expect(console.warn).toHaveBeenCalledWith("Could not delete session savedata!", expect.any(Error));
|
|
});
|
|
});
|
|
|
|
describe("Clear", () => {
|
|
const params: ClearSessionSavedataRequest = {
|
|
clientSessionId: "test-session-id",
|
|
slot: 3,
|
|
trainerId: 123456789,
|
|
};
|
|
|
|
it("should return sucess=true on SUCCESS", async () => {
|
|
server.use(
|
|
http.post(`${apiBase}/savedata/session/clear`, () =>
|
|
HttpResponse.json<ClearSessionSavedataResponse>({
|
|
success: true,
|
|
})
|
|
)
|
|
);
|
|
|
|
const { success, error } = await sessionSavedataApi.clear(params, {} as SessionSaveData);
|
|
|
|
expect(success).toBe(true);
|
|
expect(error).toBeUndefined();
|
|
});
|
|
|
|
it("should return sucess=false & an error string on FAILURE", async () => {
|
|
server.use(
|
|
http.post(`${apiBase}/savedata/session/clear`, () =>
|
|
HttpResponse.json<ClearSessionSavedataResponse>({
|
|
success: false,
|
|
error: "Failed to clear!",
|
|
})
|
|
)
|
|
);
|
|
|
|
const { success, error } = await sessionSavedataApi.clear(params, {} as SessionSaveData);
|
|
|
|
expect(error).toBe("Failed to clear!");
|
|
expect(success).toBe(false);
|
|
});
|
|
|
|
it("should return success=false & error='Unknown error' and report a warning on ERROR", async () => {
|
|
server.use(http.post(`${apiBase}/savedata/session/clear`, () => HttpResponse.error()));
|
|
|
|
const { success, error } = await sessionSavedataApi.clear(params, {} as SessionSaveData);
|
|
|
|
expect(error).toBe("Unknown error");
|
|
expect(success).toBe(false);
|
|
});
|
|
});
|
|
});
|