import { cleanup, render, screen } from '@testing-library/react' import { CalendarDays } from 'lucide-react' import { afterEach, describe, expect, it, vi } from 'vitest' import { CampaignPageChromeText } from '@/components/campaign/shell/CampaignPageChromeText' afterEach(() => { cleanup() vi.restoreAllMocks() }) describe('CampaignPageChromeText (mobile)', () => { it('renderiza o título como botão quando há onTitleClick', () => { const action = vi.fn() render( , ) const button = screen.getByRole('button', { name: '9 Agosto' }) button.click() expect(action).toHaveBeenCalled() // Sem `icon` no contrato, o botão não renderiza glyph nenhum. expect(button.querySelector('svg')).toBeNull() }) it('renderiza o glyph do affordance (aria-hidden) quando onTitleClick.icon existe', () => { render( , ) const button = screen.getByRole('button', { name: '9 Agosto' }) const icon = button.querySelector('svg') expect(icon).not.toBeNull() expect(icon?.getAttribute('aria-hidden')).toBe('true') }) it('não renderiza glyph sem icon no contrato', () => { render() expect(screen.queryByRole('button')).toBeNull() expect(screen.getByText('Agenda')).toBeTruthy() }) }) describe('CampaignPageChromeText (desktop)', () => { it('não vira botão nem renderiza glyph — o chrome do desktop é texto', () => { render( , ) expect(screen.queryByRole('button')).toBeNull() expect(screen.getByText('9 Agosto')).toBeTruthy() }) })