diff --git a/src/lib/moment/compare.js b/src/lib/moment/compare.js index b26bac633c..2c945e4fc9 100644 --- a/src/lib/moment/compare.js +++ b/src/lib/moment/compare.js @@ -29,7 +29,10 @@ export function isBefore (input, units) { } } -export function isBetween (from, to, units, inclusivity) { +export function isBetween(from, to, units, inclusivity) { + if (!this.isValid()) { + return false; + } inclusivity = inclusivity || '()'; return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); diff --git a/src/test/moment/is_between.js b/src/test/moment/is_between.js index b58f4ec93b..deb9be7b51 100644 --- a/src/test/moment/is_between.js +++ b/src/test/moment/is_between.js @@ -209,6 +209,24 @@ test('is between milliseconds inclusivity', function (assert) { moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), true, 'start and end inclusive, should handle same end and start date'); }); +test('is between without units inclusivity for invalid date', function (assert) { + var m = moment(new Date('non date')), + mCopy = moment(m); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '()'), false, 'invalid moment'); + + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '(]'), false, 'invalid moment'); + + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '[)'), false, 'invalid moment'); + + assert.equal(m.isBetween('2010-01', '2011-01', null, '[]'), false, 'invalid moment'); +}); + test('is between year', function (assert) { var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); assert.equal(m.isBetween(