import { renderWithProviders, screen } from '../../../test/render'; import { describe, it, expect } from 'vitest'; import { ProjectCard, type ProjectMember } from './ProjectCard'; import React from 'react'; const members: ProjectMember[] = [ { name: 'Ana', initials: 'A' }, { name: 'Bruno', initials: 'B' }, { name: 'Carla', initials: 'C' }, ]; describe('ProjectCard', () => { it('renders title, description and progress info', () => { renderWithProviders( ); expect(screen.getByText('Redesign do site')).toBeInTheDocument(); expect(screen.getByText('Atualização visual completa')).toBeInTheDocument(); expect(screen.getByText('Progresso')).toBeInTheDocument(); expect(screen.getByText('42%')).toBeInTheDocument(); }); it('renders a translated status badge label for each status value', () => { const { rerender } = renderWithProviders( ); expect(screen.getByText('Em andamento')).toBeInTheDocument(); rerender(); expect(screen.getByText('Em revisão')).toBeInTheDocument(); rerender(); expect(screen.getByText('Concluído')).toBeInTheDocument(); rerender(); expect(screen.getByText('Pausado')).toBeInTheDocument(); rerender(); expect(screen.getByText('Em risco')).toBeInTheDocument(); }); it('renders member avatars up to maxMembers and shows an overflow counter', () => { renderWithProviders( ); expect(screen.getByText('A')).toBeInTheDocument(); expect(screen.getByText('B')).toBeInTheDocument(); expect(screen.queryByText('C')).not.toBeInTheDocument(); expect(screen.getByText('+1')).toBeInTheDocument(); }); it('does not show an overflow counter when members fit within maxMembers', () => { renderWithProviders( ); expect(screen.getByText('A')).toBeInTheDocument(); expect(screen.getByText('B')).toBeInTheDocument(); expect(screen.getByText('C')).toBeInTheDocument(); expect(screen.queryByText(/^\+/)).not.toBeInTheDocument(); }); it('renders the due date and the action node when provided', () => { renderWithProviders( Editar} /> ); expect(screen.getByText('20 de agosto')).toBeInTheDocument(); expect(screen.getByRole('button', { name: 'Editar' })).toBeInTheDocument(); }); });