import { render, screen, fireEvent, waitFor } from '@testing-library/react'; import { describe, it, expect, vi, beforeEach } from 'vitest'; import { CodeBlock } from './CodeBlock'; import React from 'react'; describe('CodeBlock', () => { const mockWriteText = vi.fn().mockResolvedValue(undefined); beforeEach(() => { vi.clearAllMocks(); // Mock clipboard API safely vi.stubGlobal('navigator', { clipboard: { writeText: mockWriteText, }, }); }); it('renders code correctly', () => { const code = 'const x = 1;'; const { container } = render(); // Simple check: is the text present in the container? expect(container.textContent).toContain(code); }); it('shows filename in header', () => { render(); expect(screen.getByText('test.ts')).toBeInTheDocument(); }); it('copies code to clipboard when button is clicked', async () => { const code = 'copy me'; render(); const copyButton = screen.getByLabelText('Copiar código'); fireEvent.click(copyButton); expect(mockWriteText).toHaveBeenCalledWith(code); await waitFor(() => { expect(screen.getByLabelText('Copiado')).toBeInTheDocument(); }); }); });