/**
* Copyright (c) 2019 Paul Armstrong
*/
import DatePicker from '../DatePicker';
import React from 'react';
import { View } from 'react-native';
import { fireEvent, render } from 'react-native-testing-library';
describe('DatePicker', () => {
let viewRef;
beforeEach(() => {
viewRef = React.createRef();
render();
});
describe('minDate', () => {
test('disables days before the minDate', () => {
const { queryAllByProps } = render(
);
expect(queryAllByProps({ accessibilityLabel: '2019-03-25', disabled: true, type: 'text' })).toHaveLength(1);
});
});
describe('maxDate', () => {
test('disables days after the maxDate', () => {
const { queryAllByProps } = render(
);
expect(queryAllByProps({ accessibilityLabel: '2019-03-27', disabled: true, type: 'text' })).toHaveLength(1);
});
});
describe('selectedDate', () => {
test('sets a different style for the selected date', () => {
const { queryAllByProps } = render();
expect(queryAllByProps({ accessibilityLabel: '2019-03-23', disabled: false, type: 'unelevated' })).toHaveLength(
1
);
});
});
describe('navigation', () => {
test('next month moves forward', () => {
const { getByProps, queryAllByText } = render(
);
expect(queryAllByText('March')).toHaveLength(1);
fireEvent.press(getByProps({ title: 'Next month' }));
expect(queryAllByText('April')).toHaveLength(1);
});
test('previous month moves forward', () => {
const { getByProps, queryAllByText } = render(
);
expect(queryAllByText('March')).toHaveLength(1);
fireEvent.press(getByProps({ title: 'Previous month' }));
expect(queryAllByText('February')).toHaveLength(1);
});
});
describe('onSelect', () => {
test('fires when day button is pressed', () => {
const handleSelect = jest.fn();
const { getByProps } = render(
);
fireEvent.press(getByProps({ accessibilityLabel: '2019-03-24', disabled: false }));
expect(handleSelect).toHaveBeenCalledWith(new Date(2019, 2, 24));
});
});
});