106 lines
4.0 KiB
JavaScript
106 lines
4.0 KiB
JavaScript
import Vue from 'vue'
|
|
import { mount } from '@vue/test-utils'
|
|
|
|
import PopDateRange from '../pop_date_range'
|
|
|
|
import { makeTestWrapper } from '../../test_utils/component_test_helpers'
|
|
|
|
const PopDateRangeWrapper = makeTestWrapper({
|
|
components: { PopDateRange },
|
|
templatePath: 'pop_date_range.html',
|
|
data: function() {
|
|
return {
|
|
initialMinStartDate: '2019-09-14',
|
|
initialMaxEndDate: '2022-09-14',
|
|
}
|
|
},
|
|
})
|
|
|
|
describe('PopDateRange Test', () => {
|
|
const component = new Vue(PopDateRange)
|
|
|
|
it('should calculate the max start date', () => {
|
|
component.maxStartDate = new Date('2020-01-01')
|
|
const date = new Date('2019-12-31')
|
|
expect(component.calcMaxStartDate(date)).toEqual(date)
|
|
})
|
|
|
|
it('should calculate the min end date', () => {
|
|
component.minEndDate = new Date('2020-01-01')
|
|
const date = new Date('2020-02-02')
|
|
expect(component.calcMinEndDate(date)).toEqual(date)
|
|
})
|
|
|
|
it('should add an error to the start date if it is out of range', () => {
|
|
const wrapper = mount(PopDateRangeWrapper, {
|
|
propsData: {
|
|
initialData: {},
|
|
},
|
|
})
|
|
|
|
const error = ['usa-input--error']
|
|
var startDateField = wrapper.find('fieldset[name="start_date"]')
|
|
var endDateField = wrapper.find('fieldset[name="end_date"]')
|
|
|
|
// set valid date range
|
|
startDateField.find('input[name="date-month"]').setValue('01')
|
|
startDateField.find('input[name="date-day"]').setValue('01')
|
|
startDateField.find('input[name="date-year"]').setValue('2020')
|
|
|
|
endDateField.find('input[name="date-month"]').setValue('01')
|
|
endDateField.find('input[name="date-day"]').setValue('01')
|
|
endDateField.find('input[name="date-year"]').setValue('2021')
|
|
|
|
// manually trigger the change event in the hidden fields
|
|
startDateField.find('input[name="start_date"]').trigger('change')
|
|
endDateField.find('input[name="end_date"]').trigger('change')
|
|
|
|
// check that both dates do not have error class
|
|
expect(startDateField.classes()).toEqual(expect.not.arrayContaining(error))
|
|
expect(endDateField.classes()).toEqual(expect.not.arrayContaining(error))
|
|
|
|
// update start date to be after end date and trigger change event
|
|
startDateField.find('input[name="date-year"]').setValue('2022')
|
|
startDateField.find('input[name="start_date"]').trigger('change')
|
|
|
|
expect(startDateField.classes()).toEqual(expect.arrayContaining(error))
|
|
expect(endDateField.classes()).toEqual(expect.not.arrayContaining(error))
|
|
})
|
|
|
|
it('should add an error to the end date if it is out of range', () => {
|
|
const wrapper = mount(PopDateRangeWrapper, {
|
|
propsData: {
|
|
initialData: {},
|
|
},
|
|
})
|
|
|
|
const error = ['usa-input--error']
|
|
var startDateField = wrapper.find('fieldset[name="start_date"]')
|
|
var endDateField = wrapper.find('fieldset[name="end_date"]')
|
|
|
|
// set valid date range
|
|
startDateField.find('input[name="date-month"]').setValue('01')
|
|
startDateField.find('input[name="date-day"]').setValue('01')
|
|
startDateField.find('input[name="date-year"]').setValue('2020')
|
|
|
|
endDateField.find('input[name="date-month"]').setValue('01')
|
|
endDateField.find('input[name="date-day"]').setValue('01')
|
|
endDateField.find('input[name="date-year"]').setValue('2021')
|
|
|
|
// manually trigger the change event in the hidden fields
|
|
startDateField.find('input[name="start_date"]').trigger('change')
|
|
endDateField.find('input[name="end_date"]').trigger('change')
|
|
|
|
// check that both dates do not have error class
|
|
expect(startDateField.classes()).toEqual(expect.not.arrayContaining(error))
|
|
expect(endDateField.classes()).toEqual(expect.not.arrayContaining(error))
|
|
|
|
// update end date to be before end date and trigger change event
|
|
endDateField.find('input[name="date-year"]').setValue('2019')
|
|
endDateField.find('input[name="end_date"]').trigger('change')
|
|
|
|
expect(startDateField.classes()).toEqual(expect.not.arrayContaining(error))
|
|
expect(endDateField.classes()).toEqual(expect.arrayContaining(error))
|
|
})
|
|
})
|