Take leap years into account

This commit is contained in:
George Drummond 2019-01-28 09:42:15 -05:00
parent 454d7f10df
commit a7aaec3cc2
No known key found for this signature in database
GPG Key ID: 296DD6077123BF17
2 changed files with 21 additions and 1 deletions

View File

@ -32,6 +32,8 @@ describe('DateSelector', () => {
describe('daysMaxCalculation', () => { describe('daysMaxCalculation', () => {
it('calculates correctly for each month', () => { it('calculates correctly for each month', () => {
component.year = null
let months = { let months = {
'1': 31, '1': 31,
'2': 29, '2': 29,
@ -52,6 +54,19 @@ describe('DateSelector', () => {
expect(component.daysMaxCalculation).toEqual(months[month]) expect(component.daysMaxCalculation).toEqual(months[month])
} }
}) })
it('takes year or lack of year into account and calculates leap years', () => {
component.month = 2
component.year = null
expect(component.daysMaxCalculation).toEqual(29)
component.year = 2019
expect(component.daysMaxCalculation).toEqual(28)
component.year = 2016
expect(component.daysMaxCalculation).toEqual(29)
})
}) })
describe('isMonthValid', () => { describe('isMonthValid', () => {

View File

@ -1,4 +1,5 @@
import Vue from 'vue' import Vue from 'vue'
import { getDaysInMonth } from 'date-fns'
var paddedNumber = function(number) { var paddedNumber = function(number) {
if ((number + '').length === 1) { if ((number + '').length === 1) {
@ -78,7 +79,11 @@ export default Vue.component('date-selector', {
daysMaxCalculation: function() { daysMaxCalculation: function() {
switch (parseInt(this.month)) { switch (parseInt(this.month)) {
case 2: // February case 2: // February
return 29 if (this.year) {
return getDaysInMonth(new Date(this.year, this.month - 1))
} else {
return 29
}
break break
case 4: // April case 4: // April