import { describe, it, expect, vi, beforeEach } from 'vitest'
import { screen } from '@testing-library/react'
import Accueil from '../../pages/Accueil'
import { getGameWindowApi } from '../../services/game'
import { renderWithProviders } from '../renderWithProviders'
vi.mock('../../services/game', () => ({
getGameWindowApi: vi.fn(),
}))
describe('Accueil - dates du jeu-concours', () => {
beforeEach(() => vi.clearAllMocks())
it("affiche les dates fixées dans le tableau de bord admin", async () => {
getGameWindowApi.mockResolvedValue({
configured: true,
phase: 'SCHEDULED',
startDate: '2026-11-14T23:00:00.000Z',
participationDeadline: '2026-12-14T23:00:00.000Z',
claimDeadline: '2027-01-13T23:00:00.000Z',
})
renderWithProviders(, { route: '/accueil' })
expect(await screen.findByText('Du 15 novembre au 14 décembre 2026')).toBeInTheDocument()
expect(screen.getByText(/ouverte du 15 novembre au 14 décembre 2026 inclus/)).toBeInTheDocument()
expect(screen.getByText(/retirer jusqu'au 13 janvier 2027/)).toBeInTheDocument()
await vi.waitFor(() => {
expect(document.title).toBe('Jeu-concours 100 % Gagnant du 15 novembre au 14 décembre | Thé Tip Top')
})
})
it("affiche les dates par défaut (2 → 31 octobre 2026) si l'API ne répond pas", async () => {
getGameWindowApi.mockRejectedValue(new Error('réseau'))
renderWithProviders(, { route: '/accueil' })
expect(screen.getByText('Du 02 au 31 octobre 2026')).toBeInTheDocument()
expect(screen.getByText(/retirer jusqu'au 30 novembre 2026/)).toBeInTheDocument()
await vi.waitFor(() => expect(getGameWindowApi).toHaveBeenCalled())
expect(screen.getByText('Du 02 au 31 octobre 2026')).toBeInTheDocument()
})
})