]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Fix isValid so that toJSON works after a moment is frozen
authorBen Ng <ben@ben.local>
Fri, 19 Aug 2016 14:34:31 +0000 (10:34 -0400)
committerIskren Chernev <iskren.chernev@gmail.com>
Sat, 3 Sep 2016 06:19:59 +0000 (23:19 -0700)
src/lib/create/valid.js
src/test/moment/to_type.js

index 4c621168cad8a71f15f34fee4d14d3903de21583..665abd35fb9cebc373b43623cdff2bcf39c92192 100644 (file)
@@ -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;
 }
index 24d8e83395ebf9fbad05c13c778d2e309eff9f7e..51176ceda6b4f503a2810a7ae1bfb2cd678e663a 100644 (file)
@@ -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');
+});