formvalidation
Version:
The best jQuery plugin to validate form fields. Support Bootstrap, Foundation, Pure, SemanticUI, UIKit and custom frameworks
1,081 lines (899 loc) • 37.6 kB
JavaScript
function getDate(value, validator, $field) {
return validator.getFieldElements('date').val();
};
TestSuite = $.extend({}, TestSuite, {
Date: {
getDate: function(value, validator, $field) {
return validator.getFieldElements('date').val();
}
}
});
describe('date', function() {
beforeEach(function() {
$([
'<form class="form-horizontal" id="dateForm">',
'<div id="msg"></div>',
'<div class="form-group">',
'<input type="text" name="date" data-fv-date />',
'</div>',
'<div class="form-group">',
'<input type="text" name="minDate" data-fv-date data-fv-date-min="" />',
'</div>',
'<div class="form-group">',
'<input type="text" name="maxDate" data-fv-date data-fv-date-max="" />',
'</div>',
'<div class="form-group">',
'<input type="text" name="range" data-fv-date data-fv-date-min="" data-fv-date-max="" />',
'</div>',
'</form>'
].join('\n')).appendTo('body');
$('#dateForm').formValidation();
this.fv = $('#dateForm').data('formValidation');
this.$date = this.fv.getFieldElements('date');
this.$minDate = this.fv.getFieldElements('minDate');
this.$maxDate = this.fv.getFieldElements('maxDate');
this.$range = this.fv.getFieldElements('range');
});
afterEach(function() {
$('#dateForm').formValidation('destroy').remove();
});
it('YYYY/MM/DD', function() {
this.fv.updateOption('date', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2000/01/30');
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
// Invalid year
this.fv.resetForm();
this.$date.val('100/10/20');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
// Invalid month
this.fv.resetForm();
this.$date.val('2000/00/10');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('2000/15/10');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
// Invalid day
this.fv.resetForm();
this.$date.val('2000/03/00');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('2000/10/32');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
// Negative number
this.fv.resetForm();
this.$date.val('-2000/10/20');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('2000/-10/20');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('2000/10/-20');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
// Consist invalid characters
// Issue #310
this.fv.resetForm();
this.$date.val('aaaa/');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('2004df/1dd1/5ffg');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
// Issue #475
this.fv.resetForm();
this.$date.val('2014/09');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('2014/09/');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('2014//15');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('/09/15');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
});
it('MM/DD/YYYY', function() {
this.fv.updateOption('date', 'date', 'format', 'MM/DD/YYYY');
this.$date.val('09/15/2020');
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
this.fv.resetForm();
this.$date.val('09/15');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('09/15/');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
});
// #1102
it('YYYY-MM-DD h:m', function() {
this.fv.updateOption('date', 'date', 'format', 'YYYY-MM-DD h:m');
this.$date.val('2014-11-1 23:10');
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
this.fv.resetForm();
this.$date.val('2014-11-1 23:');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
});
// support#44
// Support dot (.) as separator for European countries
it('support dot separator', function() {
this.fv.updateOption('date', 'date', 'format', 'DD.MM.YYYY');
this.$date.val('05.11.2014');
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
this.fv.resetForm();
this.$date.val('5.1.2014');
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
// Invalid date
this.fv.resetForm();
this.$date.val('32.11.2014');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('29.02.2001');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
// Invalid month
this.fv.resetForm();
this.$date.val('5.14.2014');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
// Invalid year
this.fv.resetForm();
this.$date.val('05.11.14');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
});
it('number of days in February', function() {
this.fv.updateOption('date', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2000/02/28');
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
this.fv.resetForm();
this.$date.val('2000/02/29');
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
this.fv.resetForm();
this.$date.val('2001/02/29');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
});
// Issue #681
it('date, month, year are prefixed by zero', function() {
this.fv.updateOption('date', 'date', 'format', 'MM/DD/YYYY');
this.$date.val('0012/08/2014');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('12/0008/2014');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('12/08/002014');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('12/08/2014');
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
});
it('hours, minutes, seconds are prefixed by zero', function() {
this.fv.updateOption('date', 'date', 'format', 'YYYY/MM/DD h:m:s');
this.$date.val('2014/08/17 0007:30:00');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('2014/08/17 07:030:00');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('2014/08/17 07:30:0000');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
this.fv.resetForm();
this.$date.val('2014/08/17 07:30:00');
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
});
// min test suite
it('min date format YYYY/MM/DD', function() {
this.fv.updateOption('minDate', 'date', 'format', 'YYYY/MM/DD');
this.fv.updateOption('minDate', 'date', 'min', '2010/01/01');
this.$minDate.val('2010/01/02');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$minDate.val('2010/01/002'); // day prefexid by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
this.fv.resetForm();
this.$minDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$minDate.val('2009/12/31');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
this.fv.resetForm();
this.$minDate.val('2000/01/01');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
});
it('min date format YYYY-MM-DD', function() {
this.fv.updateOption('minDate', 'date', 'format', 'YYYY-MM-DD');
this.fv.updateOption('minDate', 'date', 'min', '2010-01-01');
this.$minDate.val('2010-01-02');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$minDate.val('2010-001-02'); // month prefexid by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
this.fv.resetForm();
this.$minDate.val('2014-08-17');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$minDate.val('2009-12-31');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
this.fv.resetForm();
this.$minDate.val('2000-01-01');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
});
it('min date format DD/MM/YYYY', function() {
this.fv.updateOption('minDate', 'date', 'format', 'DD/MM/YYYY');
this.fv.updateOption('minDate', 'date', 'min', '01/01/2010');
this.$minDate.val('02/01/2010');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$minDate.val('17/08/2014');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$minDate.val('02/01/02010'); // year prefixed by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
this.fv.resetForm();
this.$minDate.val('31/12/2009');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
this.fv.resetForm();
this.$minDate.val('01/01/2000');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
});
it('min date format YYYY-MM-DD h:m:s', function() {
this.fv.updateOption('minDate', 'date', 'format', 'YYYY-MM-DD h:m:s');
this.fv.updateOption('minDate', 'date', 'min', '2010-01-01 01:00:00');
this.fv.resetForm();
this.$minDate.val('2010-01-01 01:00:01');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.$minDate.val('2010-01-02 01:00:01');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$minDate.val('2014-08-17 12:00:00');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$minDate.val('2009-12-31 00:00:00');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
this.fv.resetForm();
this.$minDate.val('2009-12-31 010:00:00'); // hours prefixed by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
this.fv.resetForm();
this.$minDate.val('2009-12-31 10:001:00'); // minutes prefixed by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
this.fv.resetForm();
this.$minDate.val('2009-12-31 10:01:012'); // seconds prefixed by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
this.fv.resetForm();
this.$minDate.val('2009-12-31 00:00:00');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
this.fv.resetForm();
this.$minDate.val('2000-01-01 23:00:12');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toEqual(false);
});
// max test suite
it('max date format YYYY/MM/DD', function() {
this.fv.updateOption('maxDate', 'date', 'format', 'YYYY/MM/DD');
this.fv.updateOption('maxDate', 'date', 'max', '2014/09/10');
this.$maxDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$maxDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$maxDate.val('02014/012/031'); // year, month or day prefixed by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toEqual(false);
this.fv.resetForm();
this.$maxDate.val('2014/12/31');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toEqual(false);
this.fv.resetForm();
this.$maxDate.val('2015/01/01');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toEqual(false);
});
it('max date format YYYY-MM-DD', function() {
this.fv.updateOption('maxDate', 'date', 'format', 'YYYY-MM-DD');
this.fv.updateOption('maxDate', 'date', 'max', '2014-09-10');
this.$maxDate.val('2014-09-09');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$maxDate.val('2014-08-17');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$maxDate.val('02014-012-031'); // year, month or day prefixed by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toEqual(false);
this.fv.resetForm();
this.$maxDate.val('2014-12-31');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toEqual(false);
this.fv.resetForm();
this.$maxDate.val('2015-01-01');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toEqual(false);
});
it('max date format DD/MM/YYYY', function() {
this.fv.updateOption('maxDate', 'date', 'format', 'DD/MM/YYYY');
this.fv.updateOption('maxDate', 'date', 'max', '10/09/2014');
this.$maxDate.val('09/09/2014');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$maxDate.val('17/08/2014');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$maxDate.val('031/012/02014'); // year, month or day prefixed by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toEqual(false);
this.fv.resetForm();
this.$maxDate.val('31/12/2014');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toEqual(false);
this.fv.resetForm();
this.$maxDate.val('01/01/2015');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toEqual(false);
});
it('max date format YYYY-MM-DD h:m:s', function() {
this.fv.updateOption('maxDate', 'date', 'format', 'YYYY-MM-DD h:m:s');
this.fv.updateOption('maxDate', 'date', 'max', '2014-09-10 01:00:00');
this.$maxDate.val('2014-09-09 01:00:01');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$maxDate.val('2014-08-17 12:00:00');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$maxDate.val('2014-09-09 001:001:001'); // hours, minutes or seconds prefixed by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toEqual(false);
this.fv.resetForm();
this.$maxDate.val('2014-12-31 00:00:00');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toEqual(false);
this.fv.resetForm();
this.$maxDate.val('2015-01-01 23:00:12');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toEqual(false);
});
// range test suite
it('range format YYYY/MM/DD', function() {
this.fv.updateOption('range', 'date', 'format', 'YYYY/MM/DD');
this.fv.updateOption('range', 'date', 'min', '2010/09/10');
this.fv.updateOption('range', 'date', 'max', '2014/09/10');
this.$range.val('2011/01/01');
this.fv.validate();
expect(this.fv.isValidField('range')).toBeTruthy();
this.fv.resetForm();
this.$range.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('range')).toBeTruthy();
this.fv.resetForm();
this.$range.val('02014/001/031'); // year, month or day prefixed by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('range')).toEqual(false);
this.fv.resetForm();
this.$range.val('2010/09/09');
this.fv.validate();
expect(this.fv.isValidField('range')).toEqual(false);
this.fv.resetForm();
this.$range.val('2014/09/11');
this.fv.validate();
expect(this.fv.isValidField('range')).toEqual(false);
});
it('range format YYYY-MM-DD', function() {
this.fv.updateOption('range', 'date', 'format', 'YYYY-MM-DD');
this.fv.updateOption('range', 'date', 'min', '2010-09-10');
this.fv.updateOption('range', 'date', 'max', '2014-09-10');
this.$range.val('2012-01-12');
this.fv.validate();
expect(this.fv.isValidField('range')).toBeTruthy();
this.fv.resetForm();
this.$range.val('2014-09-09');
this.fv.validate();
expect(this.fv.isValidField('range')).toBeTruthy();
this.fv.resetForm();
this.$range.val('02014-003-031'); // year, month or day prefixed by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('range')).toEqual(false);
this.fv.resetForm();
this.$range.val('2009-12-31');
this.fv.validate();
expect(this.fv.isValidField('range')).toEqual(false);
this.fv.resetForm();
this.$range.val('2015-01-01');
this.fv.validate();
expect(this.fv.isValidField('range')).toEqual(false);
});
it('range format DD/MM/YYYY', function() {
this.fv.updateOption('range', 'date', 'format', 'DD/MM/YYYY');
this.fv.updateOption('range', 'date', 'min', '10/09/2010');
this.fv.updateOption('range', 'date', 'max', '10/09/2014');
this.$range.val('11/11/2011');
this.fv.validate();
expect(this.fv.isValidField('range')).toBeTruthy();
this.fv.resetForm();
this.$range.val('17/08/2014');
this.fv.validate();
expect(this.fv.isValidField('range')).toBeTruthy();
this.fv.resetForm();
this.$range.val('031/012/02013'); // year, month or day prefixed by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('range')).toEqual(false);
this.fv.resetForm();
this.$range.val('31/01/2010');
this.fv.validate();
expect(this.fv.isValidField('range')).toEqual(false);
this.fv.resetForm();
this.$range.val('25/03/2015');
this.fv.validate();
expect(this.fv.isValidField('range')).toEqual(false);
});
it('range format YYYY-MM-DD h:m:s', function() {
this.fv.updateOption('range', 'date', 'format', 'YYYY-MM-DD h:m:s');
this.fv.updateOption('range', 'date', 'min', '2010-05-15 22:00:00');
this.fv.updateOption('range', 'date', 'max', '2015-05-15 22:00:00');
this.$range.val('2012-07-17 01:00:01');
this.fv.validate();
expect(this.fv.isValidField('range')).toBeTruthy();
this.fv.resetForm();
this.$range.val('2013-08-17 12:00:00');
this.fv.validate();
expect(this.fv.isValidField('range')).toBeTruthy();
this.fv.resetForm();
this.$range.val('2011-06-19 001:001:001'); // hours, minutes or seconds prefixed by 0 not allowed
this.fv.validate();
expect(this.fv.isValidField('range')).toEqual(false);
this.fv.resetForm();
this.$range.val('2008-11-27 23:15:00');
this.fv.validate();
expect(this.fv.isValidField('range')).toEqual(false);
this.fv.resetForm();
this.$range.val('2015-05-15 22:00:01');
this.fv.validate();
expect(this.fv.isValidField('range')).toEqual(false);
});
// dynamic min option
it('dynamic min: name of field', function() {
this.$minDate.attr('data-fv-date-min', 'date');
this.fv.destroy();
this.fv = $('#dateForm').formValidation().data('formValidation');
this.fv.updateOption('minDate', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2014/09/08');
this.$minDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$date.val('2014/09/08');
this.$minDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeFalsy();
});
it('dynamic min: callback declarative function', function() {
this.$minDate.attr('data-fv-date-min', 'getDate');
this.fv.destroy();
this.fv = $('#dateForm').formValidation().data('formValidation');
this.fv.updateOption('minDate', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2014/09/08');
this.$minDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$date.val('2014/10/01');
this.$minDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeFalsy();
});
it('dynamic min: callback declarative function()', function() {
this.$minDate.attr('data-fv-date-min', 'getDate()');
this.fv.destroy();
this.fv = $('#dateForm').formValidation().data('formValidation');
this.fv.updateOption('minDate', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2014/09/08');
this.$minDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$date.val('2014/10/01');
this.$minDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeFalsy();
});
it('dynamic min: callback declarative A.B.C', function() {
this.$minDate.attr('data-fv-date-min', 'TestSuite.Date.getDate');
this.fv.destroy();
this.fv = $('#dateForm').formValidation().data('formValidation');
this.fv.updateOption('minDate', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2014/09/08');
this.$minDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$date.val('2014/10/01');
this.$minDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeFalsy();
});
it('dynamic min: callback declarative A.B.C()', function() {
this.$minDate.attr('data-fv-date-min', 'TestSuite.Date.getDate()');
this.fv.destroy();
this.fv = $('#dateForm').formValidation().data('formValidation');
this.fv.updateOption('minDate', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2014/09/08');
this.$minDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$date.val('2014/10/01');
this.$minDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeFalsy();
});
it('dynamic min: callback programmatically', function() {
this.$minDate.removeAttr('data-fv-date-min');
this.fv.destroy();
this.fv = $('#dateForm')
.formValidation({
fields: {
minDate: {
validators: {
date: {
min: function(value, validator, $field) {
return getDate(value, validator, $field);
}
}
}
}
}
})
.data('formValidation');
this.fv.updateOption('minDate', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2014/09/08');
this.$minDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$date.val('2014/10/01');
this.$minDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeFalsy();
});
// dynamic max option
it('dynamic max: name of field', function() {
this.$maxDate.attr('data-fv-date-max', 'date');
this.fv.destroy();
this.fv = $('#dateForm').formValidation().data('formValidation');
this.fv.updateOption('maxDate', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2015/01/01');
this.$maxDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$date.val('2014/01/01');
this.$maxDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeFalsy();
});
it('dynamic max: callback declarative function', function() {
this.$maxDate.attr('data-fv-date-max', 'getDate');
this.fv.destroy();
this.fv = $('#dateForm').formValidation().data('formValidation');
this.fv.updateOption('maxDate', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2015/01/01');
this.$maxDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$date.val('2014/01/01');
this.$maxDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeFalsy();
});
it('dynamic max: callback declarative function()', function() {
this.$maxDate.attr('data-fv-date-max', 'getDate()');
this.fv.destroy();
this.fv = $('#dateForm').formValidation().data('formValidation');
this.fv.updateOption('maxDate', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2015/01/01');
this.$maxDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$date.val('2014/01/01');
this.$maxDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeFalsy();
});
it('dynamic max: callback declarative A.B.C', function() {
this.$maxDate.attr('data-fv-date-max', 'TestSuite.Date.getDate');
this.fv.destroy();
this.fv = $('#dateForm').formValidation().data('formValidation');
this.fv.updateOption('maxDate', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2015/01/01');
this.$maxDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$date.val('2014/01/01');
this.$maxDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeFalsy();
});
it('dynamic max: callback declarative A.B.C()', function() {
this.$maxDate.attr('data-fv-date-max', 'TestSuite.Date.getDate()');
this.fv.destroy();
this.fv = $('#dateForm').formValidation().data('formValidation');
this.fv.updateOption('maxDate', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2015/01/01');
this.$maxDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$date.val('2014/01/01');
this.$maxDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeFalsy();
});
it('dynamic max: callback programmatically', function() {
this.$maxDate.removeAttr('data-fv-date-max');
this.fv.destroy();
this.fv = $('#dateForm')
.formValidation({
fields: {
maxDate: {
validators: {
date: {
max: function(value, validator, $field) {
return getDate(value, validator, $field);
}
}
}
}
}
})
.data('formValidation');
this.fv.updateOption('maxDate', 'date', 'format', 'YYYY/MM/DD');
this.$date.val('2015/01/01');
this.$maxDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$date.val('2014/01/01');
this.$maxDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeFalsy();
});
// #1258: Using a Date object as value for the min or the max option
// min
it('min using a date object', function() {
this.$minDate.removeAttr('data-fv-date-min');
this.fv.destroy();
this.fv = $('#dateForm')
.formValidation({
fields: {
minDate: {
validators: {
date: {
min: new Date()
}
}
}
}
})
.data('formValidation');
this.fv.updateOption('minDate', 'date', 'format', 'YYYY/MM/DD');
this.$minDate.val('2018/09/09');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$minDate.val('2019/08/17');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$minDate.val('2011/08/17');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeFalsy();
});
it('min using a date object: callback programmatically', function() {
this.$minDate.removeAttr('data-fv-date-min');
this.fv.destroy();
this.fv = $('#dateForm')
.formValidation({
fields: {
minDate: {
validators: {
date: {
min: function(value, validator, $field) {
return new Date();
}
}
}
}
}
})
.data('formValidation');
this.fv.updateOption('minDate', 'date', 'format', 'YYYY/MM/DD');
this.$minDate.val('2018/09/09');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$minDate.val('2019/08/17');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeTruthy();
this.fv.resetForm();
this.$minDate.val('2011/08/17');
this.fv.validate();
expect(this.fv.isValidField('minDate')).toBeFalsy();
});
// max
it('max using a date object', function() {
this.$maxDate.removeAttr('data-fv-date-max');
this.fv.destroy();
this.fv = $('#dateForm')
.formValidation({
fields: {
maxDate: {
validators: {
date: {
max: new Date()
}
}
}
}
})
.data('formValidation');
this.fv.updateOption('maxDate', 'date', 'format', 'YYYY/MM/DD');
this.$maxDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$maxDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
});
it('max using a date object: callback programmatically', function() {
this.$maxDate.removeAttr('data-fv-date-max');
this.fv.destroy();
this.fv = $('#dateForm')
.formValidation({
fields: {
maxDate: {
validators: {
date: {
max: function(value, validator, $field) {
return new Date();
}
}
}
}
}
})
.data('formValidation');
this.fv.updateOption('maxDate', 'date', 'format', 'YYYY/MM/DD');
this.$maxDate.val('2014/09/09');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
this.fv.resetForm();
this.$maxDate.val('2014/08/17');
this.fv.validate();
expect(this.fv.isValidField('maxDate')).toBeTruthy();
});
// Range
it('range using a date object', function() {
this.$range.removeAttr('data-fv-date-min');
this.$range.removeAttr('data-fv-date-max');
this.fv.destroy();
this.fv = $('#dateForm')
.formValidation({
fields: {
range: {
validators: {
date: {
min: new Date(),
max: new Date(2015, 11, 31, 0, 0, 0, 0)
}
}
}
}
})
.data('formValidation');
this.fv.updateOption('range', 'date', 'format', 'YYYY/MM/DD');
this.$range.val('2015/09/09');
this.fv.validate();
expect(this.fv.isValidField('range')).toBeTruthy();
this.fv.resetForm();
this.$range.val('2015/08/17');
this.fv.validate();
expect(this.fv.isValidField('range')).toBeTruthy();
});
it('range using a date object: callback programmatically', function() {
this.$range.removeAttr('data-fv-date-min');
this.$range.removeAttr('data-fv-date-max');
this.fv.destroy();
this.fv = $('#dateForm')
.formValidation({
fields: {
range: {
validators: {
date: {
min: function(value, validator, $field) {
return new Date();
},
max: function(value, validator, $field) {
return new Date(2015, 11, 31, 0, 0, 0, 0);
}
}
}
}
}
})
.data('formValidation');
this.fv.updateOption('range', 'date', 'format', 'YYYY/MM/DD');
this.$range.val('2015/09/09');
this.fv.validate();
expect(this.fv.isValidField('range')).toBeTruthy();
this.fv.resetForm();
this.$range.val('2015/08/17');
this.fv.validate();
expect(this.fv.isValidField('range')).toBeTruthy();
});
});