From cdd1af6eaf5ab9a0ed54ee7aeb794883ce8fa9e2 Mon Sep 17 00:00:00 2001 From: Martin Donnelly Date: Wed, 16 Mar 2016 10:07:43 +0000 Subject: [PATCH] Added jshint test and tidied code to pass the test --- .jshintrc | 32 ++++++++++++++++++++ md-validator.js | 73 ++++++++++++++++++++++++++++----------------- package.json | 3 +- test/jshint.spec.js | 8 +++++ test/mocha.opts | 2 ++ 5 files changed, 90 insertions(+), 28 deletions(-) create mode 100644 .jshintrc create mode 100644 test/jshint.spec.js create mode 100644 test/mocha.opts diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..10d1327 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,32 @@ +{ + "predef": [ + "Promise" + ], + "node":true, + "browser": false, + "boss": true, + "curly": true, + "debug": false, + "devel": true, + "eqeqeq": true, + "evil": true, + "forin": false, + "immed": false, + "laxbreak": false, + "newcap": true, + "noarg": true, + "noempty": false, + "nonew": false, + "nomen": false, + "onevar": false, + "plusplus": false, + "regexp": false, + "undef": true, + "sub": true, + "strict": false, + "white": false, + "eqnull": true, + "esnext": true, + "unused": true, + "supernew":true +} diff --git a/md-validator.js b/md-validator.js index 236a739..639dfc0 100644 --- a/md-validator.js +++ b/md-validator.js @@ -1,4 +1,4 @@ -"use strict"; +'use strict'; /** * * User: Martin Donnelly @@ -6,6 +6,7 @@ * Time: 14:26 * */ +/* exported VALIDATE */ var VALIDATE = new function() { this.dateBuilder = function(d, m, y) { @@ -49,9 +50,15 @@ var VALIDATE = new function() { flag = !!/^\w+([\+\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email); b = email.split("@"); - if (b.length > 2) flag = false; - if (b[0].length == 0) flag = false; - if (email.charAt(0) == '.' || email.charAt(email.length - 1) == '.') flag = false; + if (b.length > 2) { + flag = false; + } + if (b[0].length === 0) { + flag = false; + } + if (email.charAt(0) === '.' || email.charAt(email.length - 1) === '.') { + flag = false; + } return flag; }; @@ -78,7 +85,6 @@ var VALIDATE = new function() { * @returns {boolean} */ this.money = function(inval) { - "use strict"; var rtrn = '', exp = /^\xA3?\d{1,3}?([,]\d{3}|\d)*?([.]\d{1,2})?$/; if (exp.test(inval)) { @@ -160,7 +166,7 @@ var VALIDATE = new function() { // If it is the Anguilla overseas territory postcode, we need to // treat it specially - if (toCheck.toUpperCase() == 'AI-2640') {postCode = 'AI-2640'} + if (toCheck.toUpperCase() === 'AI-2640') {postCode = 'AI-2640';} // Load new postcode back into the form element valid = true; @@ -178,7 +184,9 @@ var VALIDATE = new function() { // invalid postcode //if (valid) {return postCode;} else return false; if (valid) {return postCode;} - else return ''; + else { + return ''; + } }; /** @@ -190,7 +198,7 @@ var VALIDATE = new function() { // Convert into a string and check that we were provided with something var telNumberErrorNo, telnum = telephoneNumber + ' '; - if (telnum.length == 1) { + if (telnum.length === 1) { // telNumberErrorNo = 1; return ''; } @@ -198,19 +206,19 @@ var VALIDATE = new function() { // Don't allow country codes to be included (assumes a leading "+") var exp = /^(\+)[\s]*(.*)$/; - if (exp.test(telnum) == true) { + if (exp.test(telnum) === true) { //telNumberErrorNo = 2; return ''; } // Remove spaces from the telephone number to help validation - while (telnum.indexOf(' ') != -1) { + while (telnum.indexOf(' ') !== -1) { telnum = telnum.slice(0, telnum.indexOf(' ')) + telnum.slice(telnum.indexOf(' ') + 1); } // Remove hyphens from the telephone number to help validation - while (telnum.indexOf('-') != -1) { + while (telnum.indexOf('-') !== -1) { telnum = telnum.slice(0, telnum.indexOf('-')) + telnum.slice(telnum.indexOf('-') + 1); } @@ -218,14 +226,14 @@ var VALIDATE = new function() { // Now check that all the characters are digits exp = /^[0-9]{10,11}$/; - if (exp.test(telnum) != true) { + if (exp.test(telnum) !== true) { // telNumberErrorNo = 3; return ''; } // Now check that the first digit is 0 exp = /^0[0-9]{9,10}$/; - if (exp.test(telnum) != true) { + if (exp.test(telnum) !== true) { // telNumberErrorNo = 4; return ''; } @@ -255,7 +263,7 @@ var VALIDATE = new function() { // Finally check that the telephone number is appropriate. exp = (/^(01|02|03|05|070|071|072|073|074|075|07624|077|078|079)[0-9]+$/); - if (exp.test(telnum) != true) { + if (exp.test(telnum) !== true) { // telNumberErrorNo = 5; return ''; } @@ -265,8 +273,6 @@ var VALIDATE = new function() { }; this.validatePhone = function(params) { - "use strict"; - var uk = params.uk || false; var v = params.number; var required = params.req || false; @@ -278,49 +284,62 @@ var VALIDATE = new function() { for (var t = 0; t <= inval.length; t++) { ch = inval.charAt(t); - if (allowed.indexOf(ch) != -1) ws = ws + ch; + if (allowed.indexOf(ch) !== -1) { + ws = ws + ch; + } } return ws; }; - if (v.length == 0 && required == true) return ''; + if (v.length === 0 && required === true) { + return ''; + } if (v.length > 0) { var internationalTest1 = /((\+|00)([0-9]{2,3}))(\(0\)|0)([1-9][0-9]{9})$/i; var internationalTest2 = /((\+|00)([0-9]{2,3}))([1-9][0-9]{9})$/i; // tidy up international format numbers. - if (internationalTest1.test(v) == true) { + if (internationalTest1.test(v) === true) { itrx = internationalTest1.exec(v); v = "00" + itrx[3] + itrx[5]; } - else if (internationalTest2.test(v) == true) { + else if (internationalTest2.test(v) === true) { itrx = internationalTest2.exec(v); v = "00" + itrx[3] + itrx[4]; } // strip invalid characters v = onlyDigits(v); - if (v.length < 8) return ''; + if (v.length < 8) { + return ''; + } // only do this if it hasn't already failed if (uk) { // perform uk specific tests // de-internationalise the number - if (v.substr(0, 3) == "+44") v = "0" + v.substr(3, v.length); - if (v.substr(0, 4) == "0044") v = "0" + v.substr(4, v.length); + if (v.substr(0, 3) === "+44") { + v = "0" + v.substr(3, v.length); + } + if (v.substr(0, 4) === "0044") { + v = "0" + v.substr(4, v.length); + } var pcv = this.checkUKTelephone(v); - if (pcv === false) return ''; - if (pcv != false) v = pcv; + if (pcv === false) { + return ''; + } + if (pcv !== false) { + v = pcv; + } } else { // assume foreign - if (!(v.charAt(0) == "+" || v.substr(0, 2) == "00")) { + if (!(v.charAt(0) === "+" || v.substr(0, 2) === "00")) { // not right? - return ''; } diff --git a/package.json b/package.json index 901df3f..42e16ab 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "license": "ISC", "private": true, "devDependencies": { - "mocha": "^2.4.5" + "mocha": "^2.4.5", + "mocha-jshint": "^2.3.1" } } diff --git a/test/jshint.spec.js b/test/jshint.spec.js new file mode 100644 index 0000000..414d894 --- /dev/null +++ b/test/jshint.spec.js @@ -0,0 +1,8 @@ +/** + * + * User: Martin Donnelly + * Date: 2016-03-15 + * Time: 13:42 + * + */ +require('mocha-jshint')({paths:['md-validator.js']}); diff --git a/test/mocha.opts b/test/mocha.opts new file mode 100644 index 0000000..9c82503 --- /dev/null +++ b/test/mocha.opts @@ -0,0 +1,2 @@ +--slow 200 +--growl