Merge pull request #1126 from dod-ccpo/pop-bug-fixes

Display error when PoP start date and end date are the same
This commit is contained in:
leigh-mil 2019-10-21 09:26:02 -04:00 committed by GitHub
commit 4a61625048
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 85 additions and 22 deletions

View File

@ -165,16 +165,16 @@ describe('DateSelector', () => {
})
it('returns true when year is between min and max years', () => {
component.year = new Date('2019-01-01').getFullYear()
component.mindate = new Date('2018-01-01')
component.maxdate = new Date('2019-12-31')
component.year = '2019'
component.mindate = '2018-01-01'
component.maxdate = '2019-12-31'
expect(component.isYearValid).toEqual(true)
})
it('returns false when year is outside of min and max years', () => {
component.year = new Date('2020-01-01').getFullYear()
component.mindate = new Date('2018-01-01')
component.maxdate = new Date('2019-01-01')
component.year = '2020'
component.mindate = '2018-01-01'
component.maxdate = '2019-01-01'
expect(component.isYearValid).toEqual(false)
})
})

View File

@ -102,4 +102,62 @@ describe('PopDateRange Test', () => {
expect(startDateField.classes()).toEqual(expect.not.arrayContaining(error))
expect(endDateField.classes()).toEqual(expect.arrayContaining(error))
})
it('should add an error to the end date if it is the same as start date', () => {
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('2020')
// 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 end date has error class
expect(startDateField.classes()).toEqual(expect.not.arrayContaining(error))
expect(endDateField.classes()).toEqual(expect.arrayContaining(error))
})
it('should add an error to the start date if it is the same as end date', () => {
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('2020')
// manually trigger the change event in the hidden fields
endDateField.find('input[name="end_date"]').trigger('change')
startDateField.find('input[name="start_date"]').trigger('change')
// check that start date has error class
expect(startDateField.classes()).toEqual(expect.arrayContaining(error))
expect(endDateField.classes()).toEqual(expect.not.arrayContaining(error))
})
})

View File

@ -96,10 +96,9 @@ export default {
},
isYearValid: function() {
// Emit a change event
let valid
let minYear = this.mindate ? this.minDateParsed.getFullYear() : null
let maxYear = this.maxdate ? this.maxDateParsed.getFullYear() : null
let minYear = this.mindate ? parseInt(this.mindate) : null
let maxYear = this.maxdate ? parseInt(this.maxdate) : null
if (minYear && maxYear) {
valid = this.year >= minYear && this.year <= maxYear
@ -111,15 +110,17 @@ export default {
},
isWithinDateRange: function() {
let _mindate = this.mindate ? Date.parse(this.mindate) : null
let _maxdate = this.maxdate ? Date.parse(this.maxdate) : null
let _dateTimestamp = Date.UTC(this.year, this.month - 1, this.day)
if (_mindate !== null && _mindate >= _dateTimestamp) {
if (
this.minDateParsed !== null &&
this.minDateParsed >= this.dateParsed
) {
return false
}
if (_maxdate !== null && _maxdate <= _dateTimestamp) {
if (
this.maxDateParsed !== null &&
this.maxDateParsed <= this.dateParsed
) {
return false
}
@ -167,7 +168,7 @@ export default {
minError: function() {
if (this.isDateComplete) {
return this.minDateParsed > this.dateParsed
return this.minDateParsed >= this.dateParsed
}
return false
@ -175,7 +176,7 @@ export default {
maxError: function() {
if (this.isDateComplete) {
return this.maxDateParsed < this.dateParsed
return this.maxDateParsed <= this.dateParsed
}
return false
@ -191,23 +192,27 @@ export default {
},
maxDateParsed: function() {
return new Date(this.maxdate)
let _maxdate = this.maxdate ? Date.parse(this.maxdate) : null
return _maxdate
},
minDateParsed: function() {
return new Date(this.mindate)
let _mindate = this.mindate ? Date.parse(this.mindate) : null
return _mindate
},
maxRangeParsed: function() {
return new Date(this.maxrange)
let _maxrange = this.maxrange ? Date.parse(this.maxrange) : null
return _maxrange
},
minRangeParsed: function() {
return new Date(this.minrange)
let _minrange = this.minrange ? Date.parse(this.minrange) : null
return _minrange
},
dateParsed: function() {
return new Date(this.formattedDate)
return Date.UTC(this.year, this.month - 1, this.day)
},
},