summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJustin Worthe <justin.worthe@gmail.com>2015-12-13 22:09:06 +0200
committerJustin Worthe <justin.worthe@gmail.com>2015-12-13 22:09:06 +0200
commit3651725bb4d159f37ab891497094809471da4a06 (patch)
treea27845326d8e4cdc3a255305698ab42fb061d081 /test
parentf40fb252a30d78740e5fbdb246e05cd8ff4f888b (diff)
Added tests for ID validator
Diffstat (limited to 'test')
-rw-r--r--test/test.js60
1 files changed, 60 insertions, 0 deletions
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);
+ });
+ });
+});