From 161bddf131988a204225c8b723dcd3d11dc0da83 Mon Sep 17 00:00:00 2001 From: Ben Ng Date: Fri, 19 Aug 2016 10:34:31 -0400 Subject: [PATCH] Fix isValid so that toJSON works after a moment is frozen --- src/lib/create/valid.js | 11 +++++++++-- src/test/moment/to_type.js | 12 ++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/lib/create/valid.js b/src/lib/create/valid.js index 4c621168c..665abd35f 100644 --- a/src/lib/create/valid.js +++ b/src/lib/create/valid.js @@ -9,7 +9,7 @@ export function isValid(m) { var parsedParts = some.call(flags.parsedDateParts, function (i) { return i != null; }); - m._isValid = !isNaN(m._d.getTime()) && + var isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidMonth && @@ -20,11 +20,18 @@ export function isValid(m) { (!flags.meridiem || (flags.meridiem && parsedParts)); if (m._strict) { - m._isValid = m._isValid && + isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined; } + + if (!Object.isFrozen(m)) { + m._isValid = isNowValid; + } + else { + return isNowValid; + } } return m._isValid; } diff --git a/src/test/moment/to_type.js b/src/test/moment/to_type.js index 24d8e8339..51176ceda 100644 --- a/src/test/moment/to_type.js +++ b/src/test/moment/to_type.js @@ -27,3 +27,15 @@ test('toDate returns a copy of the internal date', function (assert) { m.year(0); assert.notEqual(d, m.toDate()); }); + +test('toJSON', function (assert) { + var expected = new Date().toISOString(); + assert.deepEqual(moment(expected).toJSON(), expected, 'toJSON invalid'); +}); + +test('toJSON works when moment is frozen', function (assert) { + var expected = new Date().toISOString(); + var m = moment(expected); + Object.freeze(m); + assert.deepEqual(m.toJSON(), expected, 'toJSON when frozen invalid'); +}); -- 2.47.2