Skip to content

Commit

Permalink
fix date validator tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Sabin Hertanu committed Dec 29, 2021
1 parent 7e426c9 commit 538a3fc
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 177 deletions.
7 changes: 3 additions & 4 deletions addon/validators/date.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,10 @@ import EmberValidator from 'ember-cp-validations/-private/ember-validator';
*
* ```javascript
* validator('date', {
* after: 'now',
* after: '25/12/2019',
* before: '1/1/2020',
* precision: 'day',
* format: 'M/D/YYY',
* errorFormat: 'M/D/YYY'
* format: { dateStyle: 'long' },
* errorFormat: { dateStyle: 'long' }
* })
* ```
*
Expand Down
1 change: 0 additions & 1 deletion tests/dummy/app/models/user-detail.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ const Validations = buildValidations(
validators: [
validator('presence', true),
validator('date', {
before: 'now',
after: computed(function() {
return moment()
.subtract(120, 'years')
Expand Down
182 changes: 10 additions & 172 deletions tests/unit/validators/date-test.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import moment from 'moment';
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';

Expand Down Expand Up @@ -33,7 +32,7 @@ module('Unit | Validator | date', function(hooks) {
assert.equal(message, true);

message = validator.validate('1/1/2016', builtOptions.toObject());
assert.equal(message, 'This field must be before Jan 1st, 2015');
assert.equal(message, 'This field must be before January 1, 2015');
});

test('valid date', function(assert) {
Expand All @@ -54,30 +53,30 @@ module('Unit | Validator | date', function(hooks) {
assert.expect(2);

options = {
format: 'DD/M/YYYY'
format: { dateStyle: 'long' }
};

builtOptions = validator.buildOptions(options);

message = validator.validate('27/3/15', builtOptions.toObject());
assert.equal(message, 'This field must be in the format of DD/M/YYYY');
assert.equal(message, 'This field must be a valid date');

message = validator.validate('27/3/2015', builtOptions.toObject());
assert.equal(message, true);
assert.equal(message, 'This field must be a valid date');
});

test('error date format', function(assert) {
assert.expect(1);

options = {
errorFormat: 'M/D/YYYY',
errorFormat: { dateStyle: 'long' },
before: '1/1/2015'
};

builtOptions = validator.buildOptions(options);

message = validator.validate('1/1/2016', builtOptions.toObject());
assert.equal(message, 'This field must be before 1/1/2015');
assert.equal(message, 'This field must be before January 1, 2015');
});

test('before', function(assert) {
Expand All @@ -90,23 +89,7 @@ module('Unit | Validator | date', function(hooks) {
builtOptions = validator.buildOptions(options);

message = validator.validate('1/1/2016', builtOptions.toObject());
assert.equal(message, 'This field must be before Jan 1st, 2015');

message = validator.validate('1/1/2014', builtOptions.toObject());
assert.equal(message, true);
});

test('before now', function(assert) {
assert.expect(2);
let now = moment().format('MMM Do, YYYY');
options = {
before: 'now'
};

builtOptions = validator.buildOptions(options);

message = validator.validate('1/1/3015', builtOptions.toObject());
assert.equal(message, `This field must be before ${now}`);
assert.equal(message, 'This field must be before January 1, 2015');

message = validator.validate('1/1/2014', builtOptions.toObject());
assert.equal(message, true);
Expand All @@ -122,7 +105,7 @@ module('Unit | Validator | date', function(hooks) {
builtOptions = validator.buildOptions(options);

message = validator.validate('1/1/2016', builtOptions.toObject());
assert.equal(message, 'This field must be on or before Jan 1st, 2015');
assert.equal(message, 'This field must be on or before January 1, 2015');

message = validator.validate('1/1/2014', builtOptions.toObject());
assert.equal(message, true);
Expand All @@ -131,70 +114,6 @@ module('Unit | Validator | date', function(hooks) {
assert.equal(message, true);
});

test('before now or on', function(assert) {
assert.expect(3);
let now = moment().format('MMM Do, YYYY');
options = {
onOrBefore: 'now'
};

builtOptions = validator.buildOptions(options);

message = validator.validate('1/1/3015', builtOptions.toObject());
assert.equal(message, `This field must be on or before ${now}`);

message = validator.validate('1/1/2014', builtOptions.toObject());
assert.equal(message, true);

message = validator.validate('now', builtOptions.toObject());
assert.equal(message, true);
});

test('before or on precision', function(assert) {
let precisions = [
'second',
'minute',
'hour',
'day',
'week',
'month',
'year'
];

assert.expect(precisions.length * 3 - 1);
let now = moment(new Date('2013-02-08T09:30:26'));
let dateString = now.toString();
let nowMessage = now.format('MMM Do, YYYY');

for (let i = 0; i < precisions.length; i++) {
let precision = precisions[i];

builtOptions = validator.buildOptions({ onOrBefore: dateString });

message = validator.validate(now, builtOptions.toObject());
assert.equal(message, true);

message = validator.validate(
moment(now).add(1, precision),
builtOptions.toObject()
);
assert.equal(message, `This field must be on or before ${nowMessage}`);

if (i + 1 !== precisions.length) {
builtOptions = validator.buildOptions({
onOrBefore: dateString,
precision: precisions[i + 1]
});

message = validator.validate(
moment(now).add(1, precisions),
builtOptions.toObject()
);
assert.equal(message, true);
}
}
});

test('after', function(assert) {
assert.expect(2);

Expand All @@ -205,28 +124,12 @@ module('Unit | Validator | date', function(hooks) {
builtOptions = validator.buildOptions(options);

message = validator.validate('1/1/2014', builtOptions.toObject());
assert.equal(message, 'This field must be after Jan 1st, 2015');
assert.equal(message, 'This field must be after January 1, 2015');

message = validator.validate('1/1/2016', builtOptions.toObject());
assert.equal(message, true);
});

test('after now', function(assert) {
assert.expect(2);
let now = moment().format('MMM Do, YYYY');
options = {
after: 'now'
};

builtOptions = validator.buildOptions(options);

message = validator.validate('1/1/2014', builtOptions.toObject());
assert.equal(message, `This field must be after ${now}`);

message = validator.validate('1/1/3015', builtOptions.toObject());
assert.equal(message, true);
});

test('after or on', function(assert) {
assert.expect(3);

Expand All @@ -237,77 +140,12 @@ module('Unit | Validator | date', function(hooks) {
builtOptions = validator.buildOptions(options);

message = validator.validate('1/1/2014', builtOptions.toObject());
assert.equal(message, 'This field must be on or after Jan 1st, 2015');
assert.equal(message, 'This field must be on or after January 1, 2015');

message = validator.validate('1/1/2016', builtOptions.toObject());
assert.equal(message, true);

message = validator.validate('1/1/2015', builtOptions.toObject());
assert.equal(message, true);
});

test('after now or on', function(assert) {
assert.expect(3);
let now = moment().format('MMM Do, YYYY');
options = {
onOrAfter: 'now',
precision: 'second'
};

builtOptions = validator.buildOptions(options);

message = validator.validate('1/1/2014', builtOptions.toObject());
assert.equal(message, `This field must be on or after ${now}`);

message = validator.validate('1/1/3015', builtOptions.toObject());
assert.equal(message, true);

message = validator.validate('now', builtOptions.toObject());
assert.equal(message, true);
});

test('after or on precision', function(assert) {
let precisions = [
'second',
'minute',
'hour',
'day',
'week',
'month',
'year'
];

assert.expect(precisions.length * 3 - 1);
let now = moment(new Date('2013-02-08T09:30:26'));
let dateString = now.toString();
let nowMessage = now.format('MMM Do, YYYY');

for (let i = 0; i < precisions.length; i++) {
let precision = precisions[i];

builtOptions = validator.buildOptions({ onOrAfter: dateString });

message = validator.validate(now, builtOptions.toObject());
assert.equal(message, true);

message = validator.validate(
moment(now).subtract(1, precision),
builtOptions.toObject()
);
assert.equal(message, `This field must be on or after ${nowMessage}`);

if (i + 1 !== precisions.length) {
builtOptions = validator.buildOptions({
onOrAfter: dateString,
precision: precisions[i + 1]
});

message = validator.validate(
moment(now).subtract(1, precisions),
builtOptions.toObject()
);
assert.equal(message, true);
}
}
});
});

0 comments on commit 538a3fc

Please sign in to comment.