@kadconsulting/dry
Version:
KAD Reusable Component Library
65 lines • 2.11 kB
JavaScript
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