Skip to content
Snippets Groups Projects
Commit 5793ac18 authored by Serdar D's avatar Serdar D
Browse files

gamesRoute.test geschrieben aber noch falsch.

parent 8b3259bf
No related branches found
No related tags found
1 merge request!33Testing
Pipeline #38810 passed
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...
// });
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment