import { render, screen } from '@testing-library/react'; import { describe, it, expect } from 'vitest'; import { DataTable } from '../DataTable'; interface User { id: string; name: string; email: string; } const columns = [ { key: 'name', header: 'Nome' }, { key: 'email', header: 'E-mail' }, ]; const data: User[] = [ { id: '1', name: 'Alice', email: 'alice@test.com' }, { id: '2', name: 'Bob', email: 'bob@test.com' }, ]; describe('DataTable', () => { it('renders columns and data correctly', () => { render(); expect(screen.getByText('Nome')).toBeInTheDocument(); expect(screen.getByText('E-mail')).toBeInTheDocument(); expect(screen.getByText('Alice')).toBeInTheDocument(); expect(screen.getByText('bob@test.com')).toBeInTheDocument(); }); it('shows skeleton when isLoading is true', () => { render(); const skeletons = document.querySelectorAll('.animate-pulse'); expect(skeletons.length).toBe(5); }); it('shows empty state when data is empty', () => { render( , ); expect(screen.getByText('Nenhum usuário encontrado')).toBeInTheDocument(); }); it('uses custom render function for columns', () => { const columnsWithRender = [ { key: 'name', header: 'Nome', render: (item: User) => {item.name.toUpperCase()}, }, ]; render(); expect(screen.getByText('ALICE')).toBeInTheDocument(); }); });