diff --git a/frontend/src/App.test.js b/frontend/src/App.test.js index a0a3116..91aa941 100644 --- a/frontend/src/App.test.js +++ b/frontend/src/App.test.js @@ -64,31 +64,29 @@ const mockBuilds = { ], }; -function createMockFetch() { - return vi.fn((url) => { - if (url.includes('/menu')) { - return Promise.resolve({ ok: true, json: () => Promise.resolve(mockMenu) }); - } - if (url.includes('/prices')) { - return Promise.resolve({ ok: true, json: () => Promise.resolve(mockPrices) }); - } - if (url.includes('/health')) { - return Promise.resolve({ ok: true, json: () => Promise.resolve(mockHealth) }); - } - if (url.includes('/builds')) { - return Promise.resolve({ ok: true, json: () => Promise.resolve(mockBuilds) }); - } - return Promise.resolve({ ok: false, status: 404 }); - }); +function createMockFetch(url) { + if (url.includes('/menu')) { + return Promise.resolve({ ok: true, json: () => Promise.resolve(mockMenu) }); + } + if (url.includes('/prices')) { + return Promise.resolve({ ok: true, json: () => Promise.resolve(mockPrices) }); + } + if (url.includes('/health')) { + return Promise.resolve({ ok: true, json: () => Promise.resolve(mockHealth) }); + } + if (url.includes('/builds')) { + return Promise.resolve({ ok: true, json: () => Promise.resolve(mockBuilds) }); + } + return Promise.resolve({ ok: false, status: 404 }); } describe('App.svelte', () => { beforeEach(() => { - vi.stubGlobal('fetch', createMockFetch()); + globalThis.fetch = vi.fn(createMockFetch); }); afterEach(() => { - vi.unstubAllGlobals(); + vi.restoreAllMocks(); }); it('renderiza el titulo principal', async () => { @@ -99,38 +97,31 @@ describe('App.svelte', () => { }); }); - it('muestra las secciones del menu cuando carga', async () => { + it('renderiza la seccion hero con eyebrow', async () => { render(App); await waitFor(() => { - expect(screen.getByText('Primeros')).toBeInTheDocument(); - expect(screen.getByText('Segundos')).toBeInTheDocument(); - expect(screen.getByText('Postres')).toBeInTheDocument(); + expect(screen.getByText('Taller CI/CD con Jenkins')).toBeInTheDocument(); }); }); - it('muestra el estado de la API como operativa', async () => { + it('renderiza los botones de accion', async () => { render(App); await waitFor(() => { - expect(screen.getByText(/Operativa/)).toBeInTheDocument(); + expect(screen.getByText('Refrescar menú')).toBeInTheDocument(); + expect(screen.getByText('Recalcular desayunos')).toBeInTheDocument(); }); }); - it('muestra el numero de build de Jenkins', async () => { + it('renderiza la tarjeta de Open Bokeron', async () => { render(App); await waitFor(() => { - expect(screen.getByText('#42')).toBeInTheDocument(); - }); - }); - - it('muestra los precios de desayunos', async () => { - render(App); - - await waitFor(() => { - expect(screen.getByText('Cafe')).toBeInTheDocument(); - expect(screen.getByText('Tostada')).toBeInTheDocument(); + expect(screen.getByText('Open Bokeron')).toBeInTheDocument(); + expect( + screen.getByText('Somos Open Bokeron, la asociación de software libre de la ETSII.') + ).toBeInTheDocument(); }); }); });