Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -17,20 +17,33 @@ describe('Metadata API', () => {
|
||||
});
|
||||
|
||||
describe('GET /api/metadata/search', () => {
|
||||
it('debería devolver resultados cuando se busca un juego existente', async () => {
|
||||
it('debería devolver múltiples resultados cuando se busca un juego existente', async () => {
|
||||
const mockResults = [
|
||||
{
|
||||
source: 'igdb',
|
||||
source: 'igdb' as const,
|
||||
externalIds: { igdb: 1 },
|
||||
name: 'The Legend of Zelda',
|
||||
title: 'The Legend of Zelda',
|
||||
slug: 'the-legend-of-zelda',
|
||||
releaseDate: '1986-02-21',
|
||||
genres: ['Adventure'],
|
||||
coverUrl: 'https://example.com/cover.jpg',
|
||||
platforms: undefined,
|
||||
},
|
||||
{
|
||||
source: 'rawg' as const,
|
||||
externalIds: { rawg: 2 },
|
||||
name: 'The Legend of Zelda: A Link to the Past',
|
||||
title: 'The Legend of Zelda: A Link to the Past',
|
||||
slug: 'the-legend-of-zelda-a-link-to-the-past',
|
||||
releaseDate: '1991-11-21',
|
||||
genres: ['Adventure'],
|
||||
coverUrl: 'https://example.com/cover2.jpg',
|
||||
platforms: undefined,
|
||||
},
|
||||
];
|
||||
|
||||
vi.spyOn(metadataService, 'enrichGame').mockResolvedValue(mockResults[0]);
|
||||
vi.spyOn(metadataService, 'searchGames').mockResolvedValue(mockResults);
|
||||
|
||||
const res = await app.inject({
|
||||
method: 'GET',
|
||||
@@ -41,11 +54,11 @@ describe('Metadata API', () => {
|
||||
const body = res.json();
|
||||
expect(Array.isArray(body)).toBe(true);
|
||||
expect(body.length).toBeGreaterThan(0);
|
||||
expect(body[0].title).toContain('Zelda');
|
||||
expect(body[0].name).toContain('Zelda');
|
||||
});
|
||||
|
||||
it('debería devolver lista vacía cuando no hay resultados', async () => {
|
||||
vi.spyOn(metadataService, 'enrichGame').mockResolvedValue(null);
|
||||
vi.spyOn(metadataService, 'searchGames').mockResolvedValue([]);
|
||||
|
||||
const res = await app.inject({
|
||||
method: 'GET',
|
||||
@@ -77,8 +90,8 @@ describe('Metadata API', () => {
|
||||
expect(res.statusCode).toBe(400);
|
||||
});
|
||||
|
||||
it('debería pasar el parámetro platform a enrichGame si se proporciona', async () => {
|
||||
const enrichSpy = vi.spyOn(metadataService, 'enrichGame').mockResolvedValue(null);
|
||||
it('debería pasar el parámetro platform a searchGames si se proporciona', async () => {
|
||||
const searchSpy = vi.spyOn(metadataService, 'searchGames').mockResolvedValue([]);
|
||||
|
||||
const res = await app.inject({
|
||||
method: 'GET',
|
||||
@@ -86,9 +99,42 @@ describe('Metadata API', () => {
|
||||
});
|
||||
|
||||
expect(res.statusCode).toBe(200);
|
||||
expect(enrichSpy).toHaveBeenCalledWith({
|
||||
expect(searchSpy).toHaveBeenCalledWith({
|
||||
title: 'mario',
|
||||
platform: 'Nintendo 64',
|
||||
year: undefined,
|
||||
});
|
||||
});
|
||||
|
||||
it('debería pasar el parámetro year a searchGames si se proporciona', async () => {
|
||||
const searchSpy = vi.spyOn(metadataService, 'searchGames').mockResolvedValue([]);
|
||||
|
||||
const res = await app.inject({
|
||||
method: 'GET',
|
||||
url: '/api/metadata/search?q=mario&year=1990',
|
||||
});
|
||||
|
||||
expect(res.statusCode).toBe(200);
|
||||
expect(searchSpy).toHaveBeenCalledWith({
|
||||
title: 'mario',
|
||||
platform: undefined,
|
||||
year: 1990,
|
||||
});
|
||||
});
|
||||
|
||||
it('debería pasar todos los parámetros a searchGames', async () => {
|
||||
const searchSpy = vi.spyOn(metadataService, 'searchGames').mockResolvedValue([]);
|
||||
|
||||
const res = await app.inject({
|
||||
method: 'GET',
|
||||
url: '/api/metadata/search?q=mario&platform=NES&year=1985',
|
||||
});
|
||||
|
||||
expect(res.statusCode).toBe(200);
|
||||
expect(searchSpy).toHaveBeenCalledWith({
|
||||
title: 'mario',
|
||||
platform: 'NES',
|
||||
year: 1985,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user