From 3651725bb4d159f37ab891497094809471da4a06 Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Sun, 13 Dec 2015 22:09:06 +0200 Subject: Added tests for ID validator --- test/test.js | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 test/test.js (limited to 'test') diff --git a/test/test.js b/test/test.js new file mode 100644 index 0000000..b4b481d --- /dev/null +++ b/test/test.js @@ -0,0 +1,60 @@ +var expect = require('chai').expect; +var saIdParser = require('../index.js'); + +describe('South African ID Number Parsing', function() { + var validIdNumbers = [{ + idNumber: '9001049818080', + dateOfBirth: new Date(1990, 0, 4), + isMale: true, + isFemale: false, + isSouthAfricanCitizen: true + }, { + idNumber: '1012311412187', + dateOfBirth: new Date(2010, 11, 31), + isMale: false, + isFemale: true, + isSouthAfricanCitizen: false + }]; + var invalidIdNumbers = [{ + idNumber: '9001049881080' //invalid check digit + }, { + idNumber: '9002302419087' //invalid date + }, { + idNumber: '9001049881a83' //has a character in there + }, { + idNumber: '90010498813' //wrong length + }]; + + it('should correctly validate valid ID numbers', function() { + validIdNumbers.forEach(function(validIdNumber) { + expect(saIdParser.validate(validIdNumber.idNumber)).to.equal(true); + }); + }); + it('should correctly validate invalid ID numbers', function() { + invalidIdNumbers.forEach(function(invalidIdNumber) { + expect(saIdParser.validate(invalidIdNumber.idNumber)).to.equal(false); + }); + }); + + it('should parse valid date of birth correctly', function() { + validIdNumbers.forEach(function(validIdNumber) { + var parsedDate = saIdParser.parseDateOfBirth(validIdNumber.idNumber); + var expectedDate = validIdNumber.dateOfBirth; + expect(parsedDate.getTime()).to.equal(expectedDate.getTime()); + }); + }); + it ('should parse valid gender correctly', function() { + validIdNumbers.forEach(function(validIdNumber) { + expect(saIdParser.parseIsMale(validIdNumber.idNumber)) + .to.equal(validIdNumber.isMale); + expect(saIdParser.parseIsFemale(validIdNumber.idNumber)) + .to.equal(validIdNumber.isFemale); + }); + }); + it ('should parse valid citizenship correctly', function() { + validIdNumbers.forEach(function(validIdNumber) { + expect(saIdParser.parseIsSouthAfricanCitizen(validIdNumber.idNumber)) + .to.equal(validIdNumber.isSouthAfricanCitizen); + }); + }); +}); -- cgit v1.2.3