formvalidation
Version:
The best jQuery plugin to validate form fields. Support Bootstrap, Foundation, Pure, SemanticUI, UIKit and custom frameworks
526 lines (457 loc) • 18.5 kB
JavaScript
describe('id', function() {
beforeEach(function() {
$([
'<form class="form-horizontal" id="idForm">',
'<div class="form-group">',
'<select class="form-control" name="country">',
'<option value="BA">Bosnia and Herzegovina</option>',
'<option value="BG">Bulgaria</option>',
'<option value="BR">Brazil</option>',
'<option value="CH">Switzerland</option>',
'<option value="CL">Chile</option>',
'<option value="CN">China</option>',
'<option value="CZ">Czech</option>',
'<option value="DK">Denmark</option>',
'<option value="EE">Estonia</option>',
'<option value="ES">Spain</option>',
'<option value="FI">Finland</option>',
'<option value="HR">Croatia</option>',
'<option value="IE">Ireland</option>',
'<option value="IS">Iceland</option>',
'<option value="LT">Lithuania</option>',
'<option value="LV">Latvia</option>',
'<option value="ME">Montenegro</option>',
'<option value="MK">Macedonia</option>',
'<option value="NL">Netherlands</option>',
'<option value="PL">Poland</option>',
'<option value="RO">Romania</option>',
'<option value="RS">Serbia</option>',
'<option value="SE">Sweden</option>',
'<option value="SI">Slovenia</option>',
'<option value="SK">Slovakia</option>',
'<option value="SM">San Marino</option>',
'<option value="TH">Thailand</option>',
'<option value="ZA">South Africa</option>',
'</select>',
'</div>',
'<div class="form-group">',
'<input class="form-control" type="text" name="id" data-fv-id />',
'</div>',
'</form>'
].join('\n')).appendTo('body');
$('#idForm').formValidation();
/**
* @type {FormValidation.Base}
*/
this.fv = $('#idForm').data('formValidation');
this.$country = this.fv.getFieldElements('country');
this.$id = this.fv.getFieldElements('id');
});
afterEach(function() {
$('#idForm').formValidation('destroy').remove();
});
it('dynamic country', function() {
this.$id.attr('data-fv-id-country', 'country');
this.fv.destroy();
this.fv = $('#idForm').formValidation().data('formValidation');
this.$country.val('BG');
this.$id.val('7552010005');
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
this.fv.resetForm();
this.$country.val('BR');
this.$id.val('231.002.999-00');
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
});
it('Bulgarian national identification number (EGN)', function() {
this.fv.updateOption('id', 'id', 'country', 'BG');
// Valid samples
var validSamples = ['7523169263', '8032056031', '803205 603 1', '8001010008', '7501020018', '7552010005', '7542011030'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['8019010008'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Brazilian national identification number (CPF)', function() {
this.fv.updateOption('id', 'id', 'country', 'BR');
// Valid samples
var validSamples = ['39053344705', '11144477735', '390.533.447-05', '111.444.777-35'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = [
'39053344705000', '390533447050000', '1114447773500000000', // support#50
'231.002.999-00', '000.000.000-00', '111.111.111-11', '23100299900', '00000000000', '11111111111'
];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Swiss Social Security Number (AHV-Nr/No AVS)', function() {
this.fv.updateOption('id', 'id', 'country', 'CH');
// Valid samples
var validSamples = ['756.1234.5678.95', '7561234567895'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
});
it('Chilean national identification number (RUN/RUT)', function() {
this.fv.updateOption('id', 'id', 'country', 'CL');
// Valid samples
var validSamples = ['76086428-5', '22060449-7', '12531909-2','12937893-K','12937893-k'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
});
// #793
it('Chinese citizen identification number', function() {
this.fv.updateOption('id', 'id', 'country', 'CN');
// Valid samples
var validSamples = ['450202201409072332', '22011219930407001X', '110108601017023'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['999999199304070016', '220112190002290016', '220112199304070019', '999999601017023', '110108999999023'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Czech national identification number (RC)', function() {
this.fv.updateOption('id', 'id', 'country', 'CZ');
// Valid samples
var validSamples = ['7103192745', '991231123'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['1103492745', '590312123'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Danish Personal Identification number (CPR)', function() {
this.fv.updateOption('id', 'id', 'country', 'DK');
// Valid samples
var validSamples = ['2110625629', '211062-5629'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['511062-5629'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Estonian Personal Identification Code (isikukood)', function() {
this.fv.updateOption('id', 'id', 'country', 'EE');
// Valid samples
var validSamples = ['37605030299'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
});
it('Spanish personal identity code (DNI/NIE/CIF)', function() {
this.fv.updateOption('id', 'id', 'country', 'ES');
// Valid samples
var validSamples = ['54362315K', '54362315-K', 'X2482300W', 'X-2482300W', 'X-2482300-W', 'A58818501', 'A-58818501'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['54362315Z', 'X-2482300A', 'A5881850A', 'K58818501', 'G58818507'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Finnish Personal Identity Code (HETU)', function() {
this.fv.updateOption('id', 'id', 'country', 'FI');
// Valid samples
var validSamples = ['311280-888Y', '131052-308T'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['131052-308U', '310252-308Y'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Croatian personal identification number (OIB)', function() {
this.fv.updateOption('id', 'id', 'country', 'HR');
// Valid samples
var validSamples = ['33392005961'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['33392005962'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Irish Personal Public Service Number (PPS)', function() {
this.fv.updateOption('id', 'id', 'country', 'IE');
// Valid samples
var validSamples = ['6433435F', '6433435FT', '6433435FW', '6433435OA', '6433435IH', '1234567TW', '1234567FA'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['6433435E', '6433435VH'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Iceland national identification number (Kennitala)', function() {
this.fv.updateOption('id', 'id', 'country', 'IS');
// Valid samples
var validSamples = ['120174-3399', '1201743399', '0902862349'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
});
it('Lithuanian Personal Code (Asmens kodas)', function() {
this.fv.updateOption('id', 'id', 'country', 'LT');
// Valid samples
var validSamples = ['38703181745'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['38703181746', '78703181745', '38703421745'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Latvian Personal Code (Personas kods)', function() {
this.fv.updateOption('id', 'id', 'country', 'LV');
// Valid samples
var validSamples = ['161175-19997', '16117519997'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['161375-19997'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Dutch national identification number (BSN)', function() {
this.fv.updateOption('id', 'id', 'country', 'NL');
// Valid samples
var validSamples = ['111222333', '941331490', '9413.31.490'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['111252333'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Polish citizen number (PESEL)', function() {
this.fv.updateOption('id', 'id', 'country', 'PL');
// Valid samples
var validSamples = ['83010411457', '87123116221'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['39100413824', '36032806768', '04271113861'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Romanian numerical personal code (CNP)', function() {
this.fv.updateOption('id', 'id', 'country', 'RO');
// Valid samples
var validSamples = ['1630615123457', '1800101221144'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['8800101221144', '1632215123457', '1630615123458'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Swedish personal identity number (personnummer)', function() {
this.fv.updateOption('id', 'id', 'country', 'SE');
// Valid samples
var validSamples = ['8112289874', '811228-9874', '811228+9874'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['811228-9873'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Slovak national identifier number (RC)', function() {
this.fv.updateOption('id', 'id', 'country', 'SK');
// Valid samples
var validSamples = ['7103192745', '991231123'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['7103192746', '1103492745'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('South African ID', function() {
this.fv.updateOption('id', 'id', 'country', 'ZA');
// Valid samples
var validSamples = ['8001015009087'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['8001015009287', '8001015009086'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
it('Thailand citizen number', function() {
this.fv.updateOption('id', 'id', 'country', 'TH');
// Valid samples
var validSamples = ['7145620509547', '3688699975685', '2368719339716'];
for (var i in validSamples) {
this.fv.resetForm();
this.$id.val(validSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toBeTruthy();
}
// Invalid samples
var invalidSamples = ['1100800092310'];
for (i in invalidSamples) {
this.fv.resetForm();
this.$id.val(invalidSamples[i]);
this.fv.validate();
expect(this.fv.isValid()).toEqual(false);
}
});
});