From: Mike Paras Date: Sat, 19 Aug 2017 01:51:41 +0000 (-0700) Subject: Fix day-of-week validation (issue #4112) X-Git-Tag: 2.19.0~7^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f65950ff22414771c7e3c26b4525be38ff4c76a8;p=thirdparty%2Fmoment.git Fix day-of-week validation (issue #4112) * Check that day-of-week matches parsed date in configFromArray * Add tests --- diff --git a/src/lib/create/from-array.js b/src/lib/create/from-array.js index 0cdf474cf..7626c455d 100644 --- a/src/lib/create/from-array.js +++ b/src/lib/create/from-array.js @@ -80,6 +80,11 @@ export function configFromArray (config) { if (config._nextDay) { config._a[HOUR] = 24; } + + // check for mismatching day of week + if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== config._d.getDay()) { + getParsingFlags(config).weekdayMismatch = true; + } } function dayOfYearFromWeekInfo(config) { diff --git a/src/lib/create/valid.js b/src/lib/create/valid.js index 96b1cf615..d13f12f8b 100644 --- a/src/lib/create/valid.js +++ b/src/lib/create/valid.js @@ -14,6 +14,7 @@ export function isValid(m) { !flags.empty && !flags.invalidMonth && !flags.invalidWeekday && + !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && diff --git a/src/test/moment/create.js b/src/test/moment/create.js index 3be3c3ae3..cfd4f5760 100644 --- a/src/test/moment/create.js +++ b/src/test/moment/create.js @@ -1224,3 +1224,8 @@ test('k, kk', function (assert) { } }); +test('mismatching day-of-week and date', function (assert) { + assert.ok(!moment('Wed 08-10-2017', 'ddd MM-DD-YYYY').isValid(), 'because the day-of-the-week is incorrect for the date'); + assert.ok(moment('Thu 08-10-2017', 'ddd MM-DD-YYYY').isValid(), 'because the day-of-the-week is correct for the date'); +}); +