diff --git a/__test__/api/favGamesListRoute.test.tsx b/__test__/api/favGamesListRoute.test.tsx index f692f744ad0aa46124bdf95bda260b922be01711..7e4f1715aa12cdd7feb72ee2338091b547242b53 100644 --- a/__test__/api/favGamesListRoute.test.tsx +++ b/__test__/api/favGamesListRoute.test.tsx @@ -1,61 +1,57 @@ -import { env } from "@/env.mjs"; -import { getFavoriteGames, getGames } from '@/lib/igdb'; - -describe('Integration Tests', () => { - // Vor jedem Test den IGDB_BASE_URL-Wert speichern und Mock für fetch setzen - beforeEach(() => { - process.env.IGDB_BASE_URL = env.IGDB_BASE_URL; - global.fetch = jest.fn(); - }); - - // Nach jedem Test den IGDB_BASE_URL-Wert wiederherstellen - afterEach(() => { - process.env.IGDB_BASE_URL = undefined; - jest.resetAllMocks(); - }); - - test('getGames should fetch games from IGDB API', async () => { - const mockGames = [{ id: 1, name: 'Game 1' }, { id: 2, name: 'Game 2' }]; - const mockResponse = { ok: true, json: jest.fn().mockResolvedValue(mockGames) }; - (fetch as jest.Mock).mockResolvedValue(mockResponse); - - const games = await getGames(); - - expect(fetch).toHaveBeenCalledWith( - `${env.IGDB_BASE_URL}/games`, - expect.objectContaining({ - method: 'POST', - headers: expect.objectContaining({ - 'Client-ID': expect.any(String), - Authorization: expect.stringMatching(/^Bearer /), - }), - body: expect.stringContaining('fields name, cover.image_id;'), - }) - ); - - expect(games).toEqual(mockGames); - }); - - test('getFavoriteGames should fetch favorite games from IGDB API', async () => { - const mockGameList = [1, 2, 3]; - const mockGames = [{ id: 1, name: 'Game 1' }, { id: 2, name: 'Game 2' }]; - const mockResponse = { ok: true, json: jest.fn().mockResolvedValue(mockGames) }; - (fetch as jest.Mock).mockResolvedValue(mockResponse); - - const games = await getFavoriteGames(mockGameList); - - expect(fetch).toHaveBeenCalledWith( - `${env.IGDB_BASE_URL}/games`, - expect.objectContaining({ - method: 'POST', - headers: expect.objectContaining({ - 'Client-ID': expect.any(String), - Authorization: expect.stringMatching(/^Bearer /), - }), - body: expect.stringContaining(`where id = (${mockGameList.toString()})`), - }) - ); - - expect(games).toEqual(mockGames); - }); -}); +// 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... +// }); diff --git a/__test__/api/gamesRoute.test.tsx b/__test__/api/gamesRoute.test.tsx new file mode 100644 index 0000000000000000000000000000000000000000..80aa671770b933e726ffe4e1c5062728b550265b --- /dev/null +++ b/__test__/api/gamesRoute.test.tsx @@ -0,0 +1,57 @@ +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... +}); \ No newline at end of file