Skip to content

Commit

Permalink
Merge pull request #3383 from ben-ng:develop
Browse files Browse the repository at this point in the history
[bugfix] toJSON: Fix isValid so that toJSON works after a moment is frozen
  • Loading branch information
ichernev committed Sep 3, 2016
2 parents 71f215b + f975373 commit de9799b
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/lib/create/valid.js
Expand Up @@ -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 &&
Expand All @@ -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 == null || !Object.isFrozen(m)) {
m._isValid = isNowValid;
}
else {
return isNowValid;
}
}
return m._isValid;
}
Expand Down
14 changes: 14 additions & 0 deletions src/test/moment/to_type.js
Expand Up @@ -27,3 +27,17 @@ 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);
if (Object.freeze != null) {
Object.freeze(m);
}
assert.deepEqual(m.toJSON(), expected, 'toJSON when frozen invalid');
});

0 comments on commit de9799b

Please sign in to comment.