Neah/node_modules/react-day-picker/src/components/Row/Row.test.tsx
2025-04-17 12:39:10 +02:00

68 lines
2.1 KiB
TypeScript

import { screen } from '@testing-library/react';
import { DayPickerProps } from 'DayPicker';
import { customRender } from 'test/render/customRender';
import { CustomComponents } from 'types/DayPickerBase';
import { Row, RowProps } from './Row';
function setup(props: RowProps, dayPickerProps?: DayPickerProps) {
customRender(<Row {...props} />, dayPickerProps);
}
const props: RowProps = {
displayMonth: new Date(2020, 1),
weekNumber: 4,
dates: [new Date(2020, 1, 1), new Date(2020, 1, 2), new Date(2020, 1, 3)]
};
describe('when "showWeekNumber" is set', () => {
const dayPickerProps = {
showWeekNumber: true,
classNames: { cell: 'cell' },
styles: { cell: { background: 'red' } }
};
beforeEach(() => {
setup(props, dayPickerProps);
});
test('should display the cell with the week number', () => {
const cell = screen.getByRole('cell', { name: `${props.weekNumber}` });
expect(cell).toBeInTheDocument();
});
test('the cell should have the "cell" class name', () => {
const cell = screen.getByRole('cell', { name: `${props.weekNumber}` });
expect(cell).toHaveClass(dayPickerProps.classNames.cell);
});
test('the cell should have the "cell" style', () => {
const cell = screen.getByRole('cell', { name: `${props.weekNumber}` });
expect(cell).toHaveStyle(dayPickerProps.styles.cell);
});
});
describe('when using a custom Day component', () => {
const components: CustomComponents = {
Day: () => <div>CustomDay</div>
};
const dayPickerProps = { components };
beforeEach(() => {
setup(props, dayPickerProps);
});
test('it should render the custom component instead', () => {
expect(screen.getAllByText('CustomDay')).toHaveLength(props.dates.length);
});
});
describe('when using a custom WeekNumber component', () => {
const components: CustomComponents = {
WeekNumber: () => <div>WeekNumber</div>
};
const dayPickerProps: DayPickerProps = { components, showWeekNumber: true };
beforeEach(() => {
setup(props, dayPickerProps);
});
test('it should render the custom component instead', () => {
expect(screen.getByText('WeekNumber')).toBeInTheDocument();
});
});