From: Ben Ng Date: Fri, 19 Aug 2016 14:34:31 +0000 (-0400) Subject: Fix isValid so that toJSON works after a moment is frozen X-Git-Tag: 2.15.0~13^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=161bddf131988a204225c8b723dcd3d11dc0da83;p=thirdparty%2Fmoment.git Fix isValid so that toJSON works after a moment is frozen --- 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'); +});