/* eslint-disable no-console */
import React from 'react'
import { fireEvent, render, screen, waitFor, within } from '../utilities/test-utils'
import DatePicker from './_date_picker'
import { getTimezoneText } from './plugins/timeSelect'
jest.setSystemTime(new Date('01/01/2020'));
const DEFAULT_DATE = new Date()
describe('DatePicker Kit', () => {
beforeEach(() => {
jest.spyOn(console, 'error').mockImplementation(() => { });
});
test('renders DatePicker input field', () => {
const testId = 'datepicker-kit'
render(
)
const kit = screen.getByTestId(testId)
expect(kit).toHaveClass('pb_date_picker_kit')
})
test('shows DatePicker date format m/d/Y', async () => {
const testId = 'datepicker-date'
render(
)
const kit = screen.getByTestId(testId)
const input = within(kit).getByPlaceholderText('Select Date')
expect(input).toBeInTheDocument()
await waitFor(() => {
expect(input).toHaveValue('01/01/2020')
})
})
test('shows DatePicker time caption text', async () => {
const testId = 'datepicker-time-caption'
render(
)
const kit = screen.getByTestId(testId)
const input = within(kit).getByPlaceholderText('Select Date')
fireEvent(
input,
new MouseEvent('click', {
bubbles: true,
cancelable: true,
}),
)
await waitFor(() => {
const caption = within(kit).getByText('Select Time')
expect(caption).toBeInTheDocument()
})
})
test('shows DatePicker timezone text', async () => {
const testId = 'datepicker-timezone'
render(
)
const kit = screen.getByTestId(testId)
const input = within(kit).getByPlaceholderText('Select Date')
const defaultTimezoneText = getTimezoneText(DEFAULT_DATE)
fireEvent(
input,
new MouseEvent('click', {
bubbles: true,
cancelable: true,
}),
)
await waitFor(() => {
const timezoneText = within(kit).getByText(defaultTimezoneText)
expect(timezoneText).toBeInTheDocument()
})
})
test('shows DatePicker meridiem toggle', async () => {
const testId = 'datepicker-meridiem'
render(
)
const kit = screen.getByTestId(testId)
const input = within(kit).getByPlaceholderText('Select Date')
fireEvent(
input,
new MouseEvent('click', {
bubbles: true,
cancelable: true,
}),
)
const meridiemToggleAM = within(kit).getByLabelText('AM')
const meridiemTogglePM = within(kit).getByLabelText('PM')
await waitFor(() => {
expect(meridiemToggleAM).toBeInTheDocument()
expect(meridiemTogglePM).toBeInTheDocument()
})
fireEvent(
meridiemToggleAM,
new MouseEvent('click', {
bubbles: true,
cancelable: true,
}),
)
await waitFor(() => {
expect(input).toHaveValue('01/01/2020 at 12:00 AM')
})
fireEvent(
meridiemTogglePM,
new MouseEvent('click', {
bubbles: true,
cancelable: true,
}),
)
await waitFor(() => {
expect(input).toHaveValue('01/01/2020 at 12:00 PM')
})
})
})