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, getGame, getGames } from "@/lib/igdb";
import { getFavoriteGames, getGames } from '@/lib/igdb';
// // Mocken der Fetch-Funktion für die API-Aufrufe
describe('Integration Tests', () => { // jest.mock('node-fetch');
// Vor jedem Test den IGDB_BASE_URL-Wert speichern und Mock für fetch setzen
beforeEach(() => { // describe('Game Service', () => {
process.env.IGDB_BASE_URL = env.IGDB_BASE_URL; // test('fetches games from the server', async () => {
global.fetch = jest.fn(); // // Mock-Daten der Spiele
}); // const mockGamesData = [
// {
// Nach jedem Test den IGDB_BASE_URL-Wert wiederherstellen // id: 1,
afterEach(() => { // name: 'Game 1',
process.env.IGDB_BASE_URL = undefined; // cover: {
jest.resetAllMocks(); // image_id: 'cover_image_id_1',
}); // url: 'cover_image_url_1'
// },
test('getGames should fetch games from IGDB API', async () => { // // Weitere Eigenschaften der IGame-Schnittstelle
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); // id: 2,
// name: 'Game 2',
const games = await getGames(); // cover: {
// image_id: 'cover_image_id_2',
expect(fetch).toHaveBeenCalledWith( // url: 'cover_image_url_2'
`${env.IGDB_BASE_URL}/games`, // },
expect.objectContaining({ // // Weitere Eigenschaften der IGame-Schnittstelle
method: 'POST', // },
headers: expect.objectContaining({ // ];
'Client-ID': expect.any(String),
Authorization: expect.stringMatching(/^Bearer /), // // Mock-Funktion für die Fetch-Funktion
}), // const mockFetch = jest.fn().mockResolvedValueOnce({
body: expect.stringContaining('fields name, cover.image_id;'), // ok: true,
}) // json: async () => mockGamesData,
); // });
expect(games).toEqual(mockGames); // // Mocken der globalen fetch-Funktion
}); // // @ts-ignore
// global.fetch = mockFetch;
test('getFavoriteGames should fetch favorite games from IGDB API', async () => {
const mockGameList = [1, 2, 3]; // // Setzen der Umgebungsvariable IGDB_BASE_URL
const mockGames = [{ id: 1, name: 'Game 1' }, { id: 2, name: 'Game 2' }]; // process.env.IGDB_BASE_URL = 'https://api.igdb.com/v4';
const mockResponse = { ok: true, json: jest.fn().mockResolvedValue(mockGames) };
(fetch as jest.Mock).mockResolvedValue(mockResponse); // // Aufruf der Funktion, die Spiele vom Server abruft
// const games = await getGames();
const games = await getFavoriteGames(mockGameList);
// // Überprüfen, ob die Fetch-Funktion mit den erwarteten Parametern aufgerufen wurde
expect(fetch).toHaveBeenCalledWith( // expect(mockFetch).toHaveBeenCalledWith('https://api.igdb.com/v4/games', {
`${env.IGDB_BASE_URL}/games`, // method: 'GET',
expect.objectContaining({ // // Weitere erwartete Optionen für den Fetch-Aufruf
method: 'POST', // });
headers: expect.objectContaining({
'Client-ID': expect.any(String), // // Überprüfen, ob die zurückgegebenen Spiele den erwarteten Daten entsprechen
Authorization: expect.stringMatching(/^Bearer /), // expect(games).toEqual(mockGamesData);
}), // });
body: expect.stringContaining(`where id = (${mockGameList.toString()})`),
}) // // Weitere Tests für getGame() und getFavoriteGames() hier...
); // });
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...
});
\ 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