UNPKG

fpl-fetch

Version:

Wrapper for the Fantasy Premier League API

224 lines (175 loc) 6.25 kB
import { type Mock, beforeEach, describe, expect, it, vi } from "vitest"; import { Client } from "../src/client"; import FplFetch from "../src"; vi.mock("../src/client", () => { return { Client: vi.fn().mockImplementation(() => ({ get: vi.fn(), })), }; }); describe("FplFetch", () => { let fplFetch: FplFetch; let mockClient: { get: Mock }; beforeEach(() => { vi.clearAllMocks(); fplFetch = new FplFetch(); mockClient = (Client as unknown as Mock).mock.results[0].value; }); it("should create an instance with default config", () => { expect(fplFetch).toBeInstanceOf(FplFetch); expect(Client).toHaveBeenCalledWith(false); }); it("should create an instance with custom config", () => { new FplFetch({ debug: true }); expect(Client).toHaveBeenCalledWith(true); }); describe("bootstrap data", () => { it("should throw an error when the client errors", async () => { mockClient.get.mockRejectedValue( new Error("Mock getBootstrapData error"), ); await expect(fplFetch.getBootstrapData()).rejects.toThrow( "Mock getBootstrapData error", ); }); it("should get bootstrap data", async () => { const mockBootstrapData = { id: 12345, }; mockClient.get.mockResolvedValue(mockBootstrapData); const result = await fplFetch.getBootstrapData(); expect(mockClient.get).toHaveBeenCalledWith("bootstrap-static/"); expect(result).toEqual(mockBootstrapData); }); }); describe("fixtures", () => { it("should throw an error when the client errors", async () => { mockClient.get.mockRejectedValue(new Error("Mock getFixtures error")); await expect(fplFetch.getFixtures()).rejects.toThrow( "Mock getFixtures error", ); }); it("should get fixtures", async () => { const mockFixtures = [ { id: 12345, }, ]; mockClient.get.mockResolvedValue(mockFixtures); const result = await fplFetch.getFixtures(); expect(mockClient.get).toHaveBeenCalledWith("fixtures/"); expect(result).toEqual(mockFixtures); }); }); describe("gameweek data", () => { it("should throw an error when the client errors", async () => { mockClient.get.mockRejectedValue(new Error("Mock getGameweekData error")); await expect(fplFetch.getGameweek(1)).rejects.toThrow( "Mock getGameweekData error", ); }); it("should get gameweek data", async () => { const mockGameweekData = { id: 12345, }; mockClient.get.mockResolvedValue(mockGameweekData); const result = await fplFetch.getGameweek(1); expect(mockClient.get).toHaveBeenCalledWith("event/1/live/"); expect(result).toEqual(mockGameweekData); }); }); describe("player data", () => { it("should throw an error when the client errors", async () => { mockClient.get.mockRejectedValue(new Error("Mock getPlayerData error")); await expect(fplFetch.getPlayer(1)).rejects.toThrow( "Mock getPlayerData error", ); }); it("should get player data", async () => { const mockPlayerData = { id: 12345, }; mockClient.get.mockResolvedValue(mockPlayerData); const result = await fplFetch.getPlayer(1); expect(mockClient.get).toHaveBeenCalledWith("element-summary/1/"); expect(result).toEqual(mockPlayerData); }); }); describe("manager data", () => { it("should throw an error when the client errors", async () => { mockClient.get.mockRejectedValue(new Error("Mock getManagerData error")); await expect(fplFetch.getManager(1)).rejects.toThrow( "Mock getManagerData error", ); }); it("should get manager data", async () => { const mockManagerData = { id: 12345, }; mockClient.get.mockResolvedValue(mockManagerData); const result = await fplFetch.getManager(1); expect(mockClient.get).toHaveBeenCalledWith("entry/1/"); expect(result).toEqual(mockManagerData); }); }); describe("manager transfers", () => { it("should throw an error when the client errors", async () => { mockClient.get.mockRejectedValue( new Error("Mock getManagerTransfers error"), ); await expect(fplFetch.getManagerTransfers(1)).rejects.toThrow( "Mock getManagerTransfers error", ); }); it("should get manager transfers", async () => { const mockTransfers = [ { id: 12345, }, ]; mockClient.get.mockResolvedValue(mockTransfers); const result = await fplFetch.getManagerTransfers(1); expect(mockClient.get).toHaveBeenCalledWith("entry/1/transfers/"); expect(result).toEqual(mockTransfers); }); }); describe("manager history", () => { it("should throw an error when the client errors", async () => { mockClient.get.mockRejectedValue( new Error("Mock getManagerHistory error"), ); await expect(fplFetch.getManagerHistory(1)).rejects.toThrow( "Mock getManagerHistory error", ); }); it("should get manager history", async () => { const mockHistory = { id: 12345, }; mockClient.get.mockResolvedValue(mockHistory); const result = await fplFetch.getManagerHistory(1); expect(mockClient.get).toHaveBeenCalledWith("entry/1/history/"); expect(result).toEqual(mockHistory); }); }); describe("manager gameweek picks", () => { it("should throw an error when the client errors", async () => { mockClient.get.mockRejectedValue( new Error("Mock getManagerGameweekPicks error"), ); await expect(fplFetch.getManagerGameweekPicks(1, 1)).rejects.toThrow( "Mock getManagerGameweekPicks error", ); }); it("should get manager gameweek picks", async () => { const mockPicks = { id: 12345, }; mockClient.get.mockResolvedValue(mockPicks); const result = await fplFetch.getManagerGameweekPicks(1, 1); expect(mockClient.get).toHaveBeenCalledWith("entry/1/event/1/picks/"); expect(result).toEqual(mockPicks); }); }); });