UNPKG

@kadconsulting/dry

Version:
65 lines 2.11 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { render, screen, fireEvent } from '@testing-library/react'; import TableHeader from './TableHeader'; import { FilterType } from '../DataTableTypes'; // Mock the Icon component jest.mock('../../Icons/Icon/Icon', () => ({ __esModule: true, default: ({ Path }) => (_jsx("div", { "data-testid": 'mock-icon', children: Path.name })), })); // Define mock headers const mockHeaders = [ // const mockHeaders: MockHeaderType[] = [ { id: 'name', Header: 'Name', filterType: FilterType.Text, getHeaderProps: () => ({ key: 'name' }), render: (type) => (type === 'Header' ? 'Name' : null), }, { id: 'age', Header: 'Age', filterType: FilterType.Number, getHeaderProps: () => ({ key: 'age' }), render: (type) => (type === 'Header' ? 'Age' : null), }, ]; // Define mock header groups const mockHeaderGroups = [ // const mockHeaderGroups: HeaderGroup<any>[] = [ { headers: mockHeaders, getHeaderGroupProps: () => ({ key: 'headerGroup' }), }, ]; // Define default props for the component const defaultProps = { headerGroups: mockHeaderGroups, onSortChange: jest.fn(), columnOrder: ['name', 'age'], columnWidths: { name: 100, age: 50 }, onColumnOrderChange: jest.fn(), onColumnResize: jest.fn(), sortedColumn: null, hasResize: true, isDraggable: true, }; describe('TableHeader', () => { it('renders header columns', () => { // ARRANGE render(_jsx(TableHeader, { ...defaultProps })); // ASSERT expect(screen.getByText('Name')).toBeInTheDocument(); expect(screen.getByText('Age')).toBeInTheDocument(); }); it('calls onSortChange when a column header is clicked', () => { // ARRANGE render(_jsx(TableHeader, { ...defaultProps })); // ACT fireEvent.click(screen.getByText('Name')); // ASSERT expect(defaultProps.onSortChange).toHaveBeenCalled(); }); }); //# sourceMappingURL=TableHeader.test.js.map