import { describe, it, expect, vi, beforeEach } from 'vitest'; import { render, screen } from '@testing-library/react'; // import { TrackStats } from './TrackStats'; // Component doesn't exist yet import * as trackService from '../services/trackService'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; vi.mock('../services/trackService'); describe.skip('TrackStats - SKIPPED: Component not implemented', () => { beforeEach(() => { vi.clearAllMocks(); }); it('should render loading state', () => { vi.mocked(trackService.getTrackStats).mockImplementation( () => new Promise(() => {}), // Never resolves ); render(); expect(screen.getByRole('status')).toBeInTheDocument(); }); it('should render stats when loaded', async () => { const mockStats = { total_plays: 1000, unique_listeners: 500, average_duration: 120.5, completion_rate: 75.0, }; vi.mocked(trackService.getTrackStats).mockResolvedValue(mockStats); render(); await waitFor(() => { expect(screen.getByText('Lectures totales')).toBeInTheDocument(); expect(screen.getByText('1.0K')).toBeInTheDocument(); expect(screen.getByText('500')).toBeInTheDocument(); expect(screen.getByText('121s')).toBeInTheDocument(); expect(screen.getByText('75.0%')).toBeInTheDocument(); }); }); it('should format large numbers correctly', async () => { const mockStats = { total_plays: 1500000, unique_listeners: 500000, average_duration: 120.5, completion_rate: 75.0, }; vi.mocked(trackService.getTrackStats).mockResolvedValue(mockStats); render(); await waitFor(() => { expect(screen.getByText('1.5M')).toBeInTheDocument(); expect(screen.getByText('500.0K')).toBeInTheDocument(); }); }); it('should display error message on failure', async () => { vi.mocked(trackService.getTrackStats).mockRejectedValue( new Error('Failed'), ); render(); await waitFor(() => { expect( screen.getByText('Impossible de charger les statistiques'), ).toBeInTheDocument(); }); }); it('should reload stats when trackId changes', async () => { const mockStats = { total_plays: 100, unique_listeners: 50, average_duration: 120, completion_rate: 75, }; vi.mocked(trackService.getTrackStats).mockResolvedValue(mockStats); const { rerender } = render(); await waitFor(() => { expect(trackService.getTrackStats).toHaveBeenCalledWith(1); }); rerender(); await waitFor(() => { expect(trackService.getTrackStats).toHaveBeenCalledWith(2); }); }); });