import { getFavoriteGames, getGame, getGames } from "@/lib/igdb";

// Mocken der Fetch-Funktion für die API-Aufrufe
jest.mock('node-fetch');

describe('Game Service', () => {
    test('fetches games from the server', async () => {
        // Mock-Daten der Spiele
        const mockGamesData = [
            {
                id: 1,
                name: 'Game 1',
                cover: {
                    image_id: 'cover_image_id_1',
                    url: 'cover_image_url_1'
                },
                // Weitere Eigenschaften der IGame-Schnittstelle
            },
            {
                id: 2,
                name: 'Game 2',
                cover: {
                    image_id: 'cover_image_id_2',
                    url: 'cover_image_url_2'
                },
                // Weitere Eigenschaften der IGame-Schnittstelle
            },
        ];

        // Mock-Funktion für die Fetch-Funktion
        const mockFetch = jest.fn().mockResolvedValueOnce({
            ok: true,
            json: async () => mockGamesData,
        });

        // Mocken der globalen fetch-Funktion
        // @ts-ignore
        global.fetch = mockFetch;

        // Setzen der Umgebungsvariable IGDB_BASE_URL
        process.env.IGDB_BASE_URL = 'https://api.igdb.com/v4';

        // Aufruf der Funktion, die Spiele vom Server abruft
        const games = await getGames();

        // Überprüfen, ob die Fetch-Funktion mit den erwarteten Parametern aufgerufen wurde
        expect(mockFetch).toHaveBeenCalledWith('https://api.igdb.com/v4/games', {
            method: 'GET',
            // Weitere erwartete Optionen für den Fetch-Aufruf
        });

        // Überprüfen, ob die zurückgegebenen Spiele den erwarteten Daten entsprechen
        expect(games).toEqual(mockGamesData);
    });

    // Weitere Tests für getGame() und getFavoriteGames() hier...
});