Browse Source

#637: Add validator for Iceland VAT numbers, thanks to @evilchili

phuoc 11 years ago
parent
commit
1602d59b4b

+ 1 - 1
CHANGELOG.md

@@ -7,7 +7,7 @@ __New features__
 * [#218](https://github.com/nghuuphuoc/bootstrapvalidator/issues/218), [#531](https://github.com/nghuuphuoc/bootstrapvalidator/pull/531): Add meid validator, thanks to [@troymccabe](https://github.com/troymccabe)
 * [#267](https://github.com/nghuuphuoc/bootstrapvalidator/issues/267), [#532](https://github.com/nghuuphuoc/bootstrapvalidator/pull/532): Add imo validator, thanks to [@troymccabe](https://github.com/troymccabe)
 * [#510](https://github.com/nghuuphuoc/bootstrapvalidator/pull/510), [#536](https://github.com/nghuuphuoc/bootstrapvalidator/pull/536): The [phone](http://bootstrapvalidator.com/validators/phone/) validator now supports French, Spanish phone number, thanks to [@dlucazeau](https://github.com/dlucazeau) and [@vadail](https://github.com/vadail)
-* [#519](https://github.com/nghuuphuoc/bootstrapvalidator/pull/519): Add validator for South African [VAT](http://bootstrapvalidator.com/validators/vat/) numbers, thanks to [@evilchili](https://github.com/evilchili)
+* [#519](https://github.com/nghuuphuoc/bootstrapvalidator/pull/519), [#637](https://github.com/nghuuphuoc/bootstrapvalidator/pull/637): Add validator for Iceland and South African [VAT](http://bootstrapvalidator.com/validators/vat/) numbers, thanks to [@evilchili](https://github.com/evilchili)
 
 __Improvements__
 

+ 1 - 0
src/js/language/be_NL.js

@@ -295,6 +295,7 @@
                 HU: 'Hongaars',
                 HR: 'Kroatisch',
                 IE: 'Iers',
+                IS: 'IJsland',
                 IT: 'Italiaans',
                 LT: 'Litouwse',
                 LU: 'Luxemburgs',

+ 1 - 0
src/js/language/bg_BG.js

@@ -295,6 +295,7 @@
                 HU: 'Унгарски',
                 HR: 'Хърватски',
                 IE: 'Ирландски',
+                IS: 'Исландия',
                 IT: 'Италиански',
                 LT: 'Литовски',
                 LU: 'Люксембург',

+ 1 - 0
src/js/language/cs_CZ.js

@@ -295,6 +295,7 @@
                 HU: 'Maďarsko',
                 HR: 'Chorvatsko',
                 IE: 'Irsko',
+                IS: 'Island',
                 IT: 'Itálie',
                 LT: 'Litvu',
                 LU: 'Lucembursko',

+ 1 - 0
src/js/language/da_DK.js

@@ -295,6 +295,7 @@
                 HU: 'ungarnsk',
                 HR: 'kroatisk',
                 IE: 'irsk',
+                IS: 'island',
                 IT: 'italiensk',
                 LT: 'litauisk',
                 LU: 'luxembourgsk',

+ 1 - 0
src/js/language/de_DE.js

@@ -295,6 +295,7 @@
                 HU: 'Ungarisch',
                 HR: 'Kroatisch',
                 IE: 'Irisch',
+                IS: 'Island',
                 IT: 'Italienisch',
                 LT: 'Lithauisch',
                 LU: 'Luxemburgerisch',

+ 1 - 0
src/js/language/en_US.js

@@ -295,6 +295,7 @@
                 HU: 'Hungarian',
                 HR: 'Croatian',
                 IE: 'Irish',
+                IS: 'Iceland',
                 IT: 'Italian',
                 LT: 'Lithuanian',
                 LU: 'Luxembourg',

+ 1 - 0
src/js/language/es_CL.js

@@ -295,6 +295,7 @@
                 HU: 'Húngaro',
                 HR: 'Croata',
                 IE: 'Irlandés',
+                IS: 'Islandia',
                 IT: 'Italiano',
                 LT: 'Lituano',
                 LU: 'Luxemburgués',

+ 1 - 0
src/js/language/es_ES.js

@@ -295,6 +295,7 @@
                 HU: 'Húngaro',
                 HR: 'Croata',
                 IE: 'Irlandés',
+                IS: 'Islandia',
                 IT: 'Italiano',
                 LT: 'Lituano',
                 LU: 'Luxemburgués',

+ 1 - 0
src/js/language/fr_FR.js

@@ -295,6 +295,7 @@
                 HU: 'hongrois',
                 HR: 'croate',
                 IE: 'irlandais',
+                IS: 'Islande',
                 IT: 'italien',
                 LT: 'lithuanien',
                 LU: 'luxembourgeois',

+ 1 - 0
src/js/language/gr_EL.js

@@ -295,6 +295,7 @@
                 HU: 'Ουγγαρίας',
                 HR: 'Κροατίας',
                 IE: 'Ιρλανδίας',
+                IS: 'Ισλανδία',
                 IT: 'Ιταλίας',
                 LT: 'Λιθουανίας',
                 LU: 'Λουξεμβούργου',

+ 1 - 0
src/js/language/hu_HU.js

@@ -295,6 +295,7 @@
                 HU: 'magyar',
                 HR: 'horvát',
                 IE: 'ír',
+                IS: 'izlandi',
                 IT: 'olasz',
                 LT: 'litván',
                 LU: 'luxemburgi',

+ 1 - 0
src/js/language/it_IT.js

@@ -295,6 +295,7 @@
                 HU: 'Ungheria',
                 HR: 'Croazia',
                 IE: 'Irlanda',
+                IS: 'Islanda',
                 IT: 'Italia',
                 LT: 'Lituania',
                 LU: 'Lussemburgo',

+ 1 - 0
src/js/language/pl_PL.js

@@ -295,6 +295,7 @@
                 HU: 'węgierski',
                 HR: 'chorwacki',
                 IE: 'irlandzki',
+                IS: 'Islandia',
                 IT: 'włoski',
                 LT: 'litewski',
                 LU: 'luksemburski',

+ 2 - 1
src/js/language/pt_BR.js

@@ -295,7 +295,8 @@
                 HU: 'Húngaro',
                 HR: 'Croata',
                 IE: 'irlandês',
-                TI: 'Italiano',
+                IS: 'Islândia',
+                IT: 'Italiano',
                 LT: 'Lituânia',
                 LU: 'Luxemburgo',
                 LV: 'Letão',

+ 1 - 0
src/js/language/tr_TR.js

@@ -295,6 +295,7 @@
                 HU: 'Macar',
                 HR: 'Hırvat',
                 IE: 'Irlandalı',
+                IS: 'İzlanda',
                 IT: 'Italyan',
                 LT: 'Litvanyalı',
                 LU: 'Lüksemburglu',

+ 1 - 0
src/js/language/vi_VN.js

@@ -295,6 +295,7 @@
                 HU: 'Hungari',
                 HR: 'Croatia',
                 IE: 'Ireland',
+                IS: 'Iceland',
                 IT: 'Ý',
                 LT: 'Lithuania',
                 LU: 'Luxembourg',

+ 1 - 0
src/js/language/zh_CN.js

@@ -295,6 +295,7 @@
                 HU: '匈牙利',
                 HR: '克罗地亚',
                 IE: '爱尔兰',
+                IS: '冰岛',
                 IT: '意大利',
                 LT: '立陶宛',
                 LU: '卢森堡',

+ 1 - 0
src/js/language/zh_TW.js

@@ -295,6 +295,7 @@
                 HU: '匈牙利',
                 HR: '克羅地亞',
                 IE: '愛爾蘭',
+                IS: '冰島',
                 IT: '意大利',
                 LT: '立陶宛',
                 LU: '盧森堡',

+ 14 - 16
src/js/validator/vat.js

@@ -790,6 +790,19 @@
         },
 
         /**
+         * Validate Icelandic VAT (VSK) number
+         * Examples:
+         * - Valid: 12345, 123456
+         * - Invalid: 1234567
+         *
+         * @params {String} value VAT number
+         * @returns {Boolean}
+         */
+        _is: function(value) {
+            return /^IS\d{5,6}$/.test(value);
+        },
+
+        /**
          * Validate Italian VAT number, which consists of 11 digits.
          * - First 7 digits are a company identifier
          * - Next 3 are the province of residence
@@ -1229,22 +1242,7 @@
          * @returns {Boolean}
          */
          _za: function(value) {
-            return /^4\d{9}$/.test(value);
-        }
-
-        /**
-         * Validate Icelandic VAT (VSK) number
-         * Examples:
-         * - Valid: 12345, 123456
-         * - Invalid: 1234567
-         *
-         * @params {String} value VAT number
-         * @returns {Boolean}
-         */
-         _is: function(value) {
-            return /^\d{5,6}$/.test(value);
+            return /^ZA4\d{9}$/.test(value);
         }
-
-
     };
 }(window.jQuery));

+ 74 - 34
test/spec.js

@@ -3210,10 +3210,9 @@ describe('id', function() {
 });
 
 describe('imo', function() {
-    beforeEach(function () {
+    beforeEach(function() {
         $([
             '<form class="form-horizontal" id="imoForm">',
-                '<div id="msg"></div>',
                 '<div class="form-group">',
                     '<input type="text" name="imo" data-bv-imo />',
                 '</div>',
@@ -3226,7 +3225,7 @@ describe('imo', function() {
         this.$imo = this.bv.getFieldElements('imo');
     });
 
-    afterEach(function () {
+    afterEach(function() {
         $('#imoForm').bootstrapValidator('destroy').remove();
     });
 
@@ -3612,10 +3611,9 @@ describe('lessThan', function() {
 });
 
 describe('meid', function() {
-    beforeEach(function () {
+    beforeEach(function() {
         $([
             '<form class="form-horizontal" id="meidForm">',
-                '<div id="msg"></div>',
                 '<div class="form-group">',
                     '<input type="text" name="meid" data-bv-meid />',
                 '</div>',
@@ -3628,7 +3626,7 @@ describe('meid', function() {
         this.$meid = this.bv.getFieldElements('meid');
     });
 
-    afterEach(function () {
+    afterEach(function() {
         $('#meidForm').bootstrapValidator('destroy').remove();
     });
 
@@ -3924,6 +3922,7 @@ describe('vat', function() {
                         '<option value="GR">Greece</option>',
                         '<option value="HU">Hungary</option>',
                         '<option value="IE">Ireland</option>',
+                        '<option value="IS">Iceland</option>',
                         '<option value="IT">Italy</option>',
                         '<option value="LV">Latvia</option>',
                         '<option value="LT">Lithuania</option>',
@@ -3942,6 +3941,7 @@ describe('vat', function() {
                         '<option value="SE">Sweden</option>',
                         '<option value="CH">Switzerland</option>',
                         '<option value="GB">United Kingdom</option>',
+                        '<option value="ZA">South Africa</option>',
                     '</select>',
                 '</div>',
                 '<div class="form-group">',
@@ -3987,7 +3987,7 @@ describe('vat', function() {
         expect(this.bv.isValid()).toEqual(false);
     });
 
-    it('Austrian VAT number', function () {
+    it('Austrian VAT number', function() {
         // Valid samples
         var validSamples = ['ATU13585627'];
         for (var i in validSamples) {
@@ -4007,7 +4007,7 @@ describe('vat', function() {
         }
     });
 
-    it('Belgian VAT number', function () {
+    it('Belgian VAT number', function() {
         // Valid samples
         var validSamples = ['BE0428759497'];
         for (var i in validSamples) {
@@ -4027,7 +4027,7 @@ describe('vat', function() {
         }
     });
 
-    it('Bulgarian VAT number', function () {
+    it('Bulgarian VAT number', function() {
         // Valid samples
         var validSamples = ['BG175074752', 'BG7523169263', 'BG8032056031', 'BG7542011030', 'BG7111042925'];
         for (var i in validSamples) {
@@ -4047,7 +4047,7 @@ describe('vat', function() {
         }
     });
 
-    it('Cypriot VAT number', function () {
+    it('Cypriot VAT number', function() {
         // Valid samples
         var validSamples = ['CY10259033P'];
         for (var i in validSamples) {
@@ -4067,7 +4067,7 @@ describe('vat', function() {
         }
     });
 
-    it('Czech Republic VAT number', function () {
+    it('Czech Republic VAT number', function() {
         // Valid samples
         var validSamples = ['CZ25123891', 'CZ7103192745', 'CZ991231123', 'CZ640903926'];
         for (var i in validSamples) {
@@ -4087,7 +4087,7 @@ describe('vat', function() {
         }
     });
 
-    it('German VAT number', function () {
+    it('German VAT number', function() {
         // Valid samples
         var validSamples = ['DE136695976'];
         for (var i in validSamples) {
@@ -4107,7 +4107,7 @@ describe('vat', function() {
         }
     });
 
-    it('Danish VAT number', function () {
+    it('Danish VAT number', function() {
         // Valid samples
         var validSamples = ['DK13585628'];
         for (var i in validSamples) {
@@ -4127,7 +4127,7 @@ describe('vat', function() {
         }
     });
 
-    it('Estonian VAT number', function () {
+    it('Estonian VAT number', function() {
         // Valid samples
         var validSamples = ['EE100931558', 'EE100594102'];
         for (var i in validSamples) {
@@ -4147,7 +4147,7 @@ describe('vat', function() {
         }
     });
 
-    it('Spanish VAT number (NIF)', function () {
+    it('Spanish VAT number (NIF)', function() {
         // Valid samples
         var validSamples = ['ES54362315K', 'ESX2482300W', 'ESX5253868R', 'ESM1234567L', 'ESJ99216582', 'ESB58378431', 'ESB64717838'];
         for (var i in validSamples) {
@@ -4167,7 +4167,7 @@ describe('vat', function() {
         }
     });
 
-    it('Finnish VAT number', function () {
+    it('Finnish VAT number', function() {
         // Valid samples
         var validSamples = ['FI20774740'];
         for (var i in validSamples) {
@@ -4187,7 +4187,7 @@ describe('vat', function() {
         }
     });
 
-    it('French VAT number (TVA)', function () {
+    it('French VAT number (TVA)', function() {
         // Valid samples
         var validSamples = ['FR40303265045', 'FR23334175221', 'FRK7399859412', 'FR4Z123456782'];
         for (var i in validSamples) {
@@ -4207,7 +4207,7 @@ describe('vat', function() {
         }
     });
 
-    it('United Kingdom VAT number', function () {
+    it('United Kingdom VAT number', function() {
         // Valid samples
         var validSamples = ['GB980780684'];
         for (var i in validSamples) {
@@ -4227,7 +4227,7 @@ describe('vat', function() {
         }
     });
 
-    it('Greek VAT number', function () {
+    it('Greek VAT number', function() {
         // Valid samples
         var validSamples = ['GR023456780', 'EL094259216'];
         for (var i in validSamples) {
@@ -4247,7 +4247,7 @@ describe('vat', function() {
         }
     });
 
-    it('Hungarian VAT number', function () {
+    it('Hungarian VAT number', function() {
         // Valid samples
         var validSamples = ['HU12892312'];
         for (var i in validSamples) {
@@ -4267,7 +4267,7 @@ describe('vat', function() {
         }
     });
 
-    it('Croatian VAT number', function () {
+    it('Croatian VAT number', function() {
         // Valid samples
         var validSamples = ['HR33392005961'];
         for (var i in validSamples) {
@@ -4287,7 +4287,7 @@ describe('vat', function() {
         }
     });
 
-    it('Irish VAT number', function () {
+    it('Irish VAT number', function() {
         // Valid samples
         var validSamples = ['IE6433435F', 'IE6433435OA', 'IE8D79739I'];
         for (var i in validSamples) {
@@ -4307,7 +4307,27 @@ describe('vat', function() {
         }
     });
 
-    it('Italian VAT number', function () {
+    it('Iceland VAT (VSK) number', function() {
+        // Valid samples
+        var validSamples = ['IS11111', 'IS111111'];
+        for (var i in validSamples) {
+            this.bv.resetForm();
+            this.$vat.val(validSamples[i]);
+            this.bv.validate();
+            expect(this.bv.isValid()).toBeTruthy();
+        }
+
+        // Invalid samples
+        var invalidSamples = ['IS1234567', 'IS123456ABC'];
+        for (i in invalidSamples) {
+            this.bv.resetForm();
+            this.$vat.val(invalidSamples[i]);
+            this.bv.validate();
+            expect(this.bv.isValid()).toEqual(false);
+        }
+    });
+
+    it('Italian VAT number', function() {
         // Valid samples
         var validSamples = ['IT00743110157'];
         for (var i in validSamples) {
@@ -4327,7 +4347,7 @@ describe('vat', function() {
         }
     });
 
-    it('Lithuanian VAT number', function () {
+    it('Lithuanian VAT number', function() {
         // Valid samples
         var validSamples = ['LT119511515', 'LT100001919017', 'LT100004801610'];
         for (var i in validSamples) {
@@ -4347,7 +4367,7 @@ describe('vat', function() {
         }
     });
 
-    it('Luxembourg VAT number', function () {
+    it('Luxembourg VAT number', function() {
         // Valid samples
         var validSamples = ['LU15027442'];
         for (var i in validSamples) {
@@ -4367,7 +4387,7 @@ describe('vat', function() {
         }
     });
 
-    it('Latvian VAT number', function () {
+    it('Latvian VAT number', function() {
         // Valid samples
         var validSamples = ['LV40003521600', 'LV16117519997'];
         for (var i in validSamples) {
@@ -4387,7 +4407,7 @@ describe('vat', function() {
         }
     });
 
-    it('Maltese VAT number', function () {
+    it('Maltese VAT number', function() {
         // Valid samples
         var validSamples = ['MT11679112'];
         for (var i in validSamples) {
@@ -4407,7 +4427,7 @@ describe('vat', function() {
         }
     });
 
-    it('Dutch VAT number', function () {
+    it('Dutch VAT number', function() {
         // Valid samples
         var validSamples = ['NL004495445B01'];
         for (var i in validSamples) {
@@ -4427,7 +4447,7 @@ describe('vat', function() {
         }
     });
 
-    it('Polish VAT number', function () {
+    it('Polish VAT number', function() {
         // Valid samples
         var validSamples = ['PL8567346215'];
         for (var i in validSamples) {
@@ -4447,7 +4467,7 @@ describe('vat', function() {
         }
     });
 
-    it('Portuguese VAT number', function () {
+    it('Portuguese VAT number', function() {
         // Valid samples
         var validSamples = ['PT501964843'];
         for (var i in validSamples) {
@@ -4467,7 +4487,7 @@ describe('vat', function() {
         }
     });
 
-    it('Romanian VAT number', function () {
+    it('Romanian VAT number', function() {
         // Valid samples
         var validSamples = ['RO18547290'];
         for (var i in validSamples) {
@@ -4487,7 +4507,7 @@ describe('vat', function() {
         }
     });
 
-    it('Swedish VAT number', function () {
+    it('Swedish VAT number', function() {
         // Valid samples
         var validSamples = ['SE123456789701'];
         for (var i in validSamples) {
@@ -4507,7 +4527,7 @@ describe('vat', function() {
         }
     });
 
-    it('Slovenian VAT number', function () {
+    it('Slovenian VAT number', function() {
         // Valid samples
         var validSamples = ['SI50223054'];
         for (var i in validSamples) {
@@ -4527,7 +4547,7 @@ describe('vat', function() {
         }
     });
 
-    it('Slovak VAT number', function () {
+    it('Slovak VAT number', function() {
         // Valid samples
         var validSamples = ['SK2022749619'];
         for (var i in validSamples) {
@@ -4546,6 +4566,26 @@ describe('vat', function() {
             expect(this.bv.isValid()).toEqual(false);
         }
     });
+
+    it('South African VAT number', function() {
+        // Valid samples
+        var validSamples = ['ZA4012345678'];
+        for (var i in validSamples) {
+            this.bv.resetForm();
+            this.$vat.val(validSamples[i]);
+            this.bv.validate();
+            expect(this.bv.isValid()).toBeTruthy();
+        }
+
+        // Invalid samples
+        var invalidSamples = ['ZA40123456789', 'ZA0123456789'];
+        for (i in invalidSamples) {
+            this.bv.resetForm();
+            this.$vat.val(invalidSamples[i]);
+            this.bv.validate();
+            expect(this.bv.isValid()).toEqual(false);
+        }
+    });
 });
 
 function getCountryCode(value, validator, $field) {

+ 52 - 51
test/spec/validator/vat.js

@@ -18,6 +18,7 @@ describe('vat', function() {
                         '<option value="GR">Greece</option>',
                         '<option value="HU">Hungary</option>',
                         '<option value="IE">Ireland</option>',
+                        '<option value="IS">Iceland</option>',
                         '<option value="IT">Italy</option>',
                         '<option value="LV">Latvia</option>',
                         '<option value="LT">Lithuania</option>',
@@ -82,7 +83,7 @@ describe('vat', function() {
         expect(this.bv.isValid()).toEqual(false);
     });
 
-    it('Austrian VAT number', function () {
+    it('Austrian VAT number', function() {
         // Valid samples
         var validSamples = ['ATU13585627'];
         for (var i in validSamples) {
@@ -102,7 +103,7 @@ describe('vat', function() {
         }
     });
 
-    it('Belgian VAT number', function () {
+    it('Belgian VAT number', function() {
         // Valid samples
         var validSamples = ['BE0428759497'];
         for (var i in validSamples) {
@@ -122,7 +123,7 @@ describe('vat', function() {
         }
     });
 
-    it('Bulgarian VAT number', function () {
+    it('Bulgarian VAT number', function() {
         // Valid samples
         var validSamples = ['BG175074752', 'BG7523169263', 'BG8032056031', 'BG7542011030', 'BG7111042925'];
         for (var i in validSamples) {
@@ -142,7 +143,7 @@ describe('vat', function() {
         }
     });
 
-    it('Cypriot VAT number', function () {
+    it('Cypriot VAT number', function() {
         // Valid samples
         var validSamples = ['CY10259033P'];
         for (var i in validSamples) {
@@ -162,7 +163,7 @@ describe('vat', function() {
         }
     });
 
-    it('Czech Republic VAT number', function () {
+    it('Czech Republic VAT number', function() {
         // Valid samples
         var validSamples = ['CZ25123891', 'CZ7103192745', 'CZ991231123', 'CZ640903926'];
         for (var i in validSamples) {
@@ -182,7 +183,7 @@ describe('vat', function() {
         }
     });
 
-    it('German VAT number', function () {
+    it('German VAT number', function() {
         // Valid samples
         var validSamples = ['DE136695976'];
         for (var i in validSamples) {
@@ -202,7 +203,7 @@ describe('vat', function() {
         }
     });
 
-    it('Danish VAT number', function () {
+    it('Danish VAT number', function() {
         // Valid samples
         var validSamples = ['DK13585628'];
         for (var i in validSamples) {
@@ -222,7 +223,7 @@ describe('vat', function() {
         }
     });
 
-    it('Estonian VAT number', function () {
+    it('Estonian VAT number', function() {
         // Valid samples
         var validSamples = ['EE100931558', 'EE100594102'];
         for (var i in validSamples) {
@@ -242,7 +243,7 @@ describe('vat', function() {
         }
     });
 
-    it('Spanish VAT number (NIF)', function () {
+    it('Spanish VAT number (NIF)', function() {
         // Valid samples
         var validSamples = ['ES54362315K', 'ESX2482300W', 'ESX5253868R', 'ESM1234567L', 'ESJ99216582', 'ESB58378431', 'ESB64717838'];
         for (var i in validSamples) {
@@ -262,7 +263,7 @@ describe('vat', function() {
         }
     });
 
-    it('Finnish VAT number', function () {
+    it('Finnish VAT number', function() {
         // Valid samples
         var validSamples = ['FI20774740'];
         for (var i in validSamples) {
@@ -282,7 +283,7 @@ describe('vat', function() {
         }
     });
 
-    it('French VAT number (TVA)', function () {
+    it('French VAT number (TVA)', function() {
         // Valid samples
         var validSamples = ['FR40303265045', 'FR23334175221', 'FRK7399859412', 'FR4Z123456782'];
         for (var i in validSamples) {
@@ -302,7 +303,7 @@ describe('vat', function() {
         }
     });
 
-    it('United Kingdom VAT number', function () {
+    it('United Kingdom VAT number', function() {
         // Valid samples
         var validSamples = ['GB980780684'];
         for (var i in validSamples) {
@@ -322,7 +323,7 @@ describe('vat', function() {
         }
     });
 
-    it('Greek VAT number', function () {
+    it('Greek VAT number', function() {
         // Valid samples
         var validSamples = ['GR023456780', 'EL094259216'];
         for (var i in validSamples) {
@@ -342,7 +343,7 @@ describe('vat', function() {
         }
     });
 
-    it('Hungarian VAT number', function () {
+    it('Hungarian VAT number', function() {
         // Valid samples
         var validSamples = ['HU12892312'];
         for (var i in validSamples) {
@@ -362,7 +363,7 @@ describe('vat', function() {
         }
     });
 
-    it('Croatian VAT number', function () {
+    it('Croatian VAT number', function() {
         // Valid samples
         var validSamples = ['HR33392005961'];
         for (var i in validSamples) {
@@ -382,7 +383,7 @@ describe('vat', function() {
         }
     });
 
-    it('Irish VAT number', function () {
+    it('Irish VAT number', function() {
         // Valid samples
         var validSamples = ['IE6433435F', 'IE6433435OA', 'IE8D79739I'];
         for (var i in validSamples) {
@@ -402,7 +403,27 @@ describe('vat', function() {
         }
     });
 
-    it('Italian VAT number', function () {
+    it('Iceland VAT (VSK) number', function() {
+        // Valid samples
+        var validSamples = ['IS11111', 'IS111111'];
+        for (var i in validSamples) {
+            this.bv.resetForm();
+            this.$vat.val(validSamples[i]);
+            this.bv.validate();
+            expect(this.bv.isValid()).toBeTruthy();
+        }
+
+        // Invalid samples
+        var invalidSamples = ['IS1234567', 'IS123456ABC'];
+        for (i in invalidSamples) {
+            this.bv.resetForm();
+            this.$vat.val(invalidSamples[i]);
+            this.bv.validate();
+            expect(this.bv.isValid()).toEqual(false);
+        }
+    });
+
+    it('Italian VAT number', function() {
         // Valid samples
         var validSamples = ['IT00743110157'];
         for (var i in validSamples) {
@@ -422,7 +443,7 @@ describe('vat', function() {
         }
     });
 
-    it('Lithuanian VAT number', function () {
+    it('Lithuanian VAT number', function() {
         // Valid samples
         var validSamples = ['LT119511515', 'LT100001919017', 'LT100004801610'];
         for (var i in validSamples) {
@@ -442,7 +463,7 @@ describe('vat', function() {
         }
     });
 
-    it('Luxembourg VAT number', function () {
+    it('Luxembourg VAT number', function() {
         // Valid samples
         var validSamples = ['LU15027442'];
         for (var i in validSamples) {
@@ -462,7 +483,7 @@ describe('vat', function() {
         }
     });
 
-    it('Latvian VAT number', function () {
+    it('Latvian VAT number', function() {
         // Valid samples
         var validSamples = ['LV40003521600', 'LV16117519997'];
         for (var i in validSamples) {
@@ -482,7 +503,7 @@ describe('vat', function() {
         }
     });
 
-    it('Maltese VAT number', function () {
+    it('Maltese VAT number', function() {
         // Valid samples
         var validSamples = ['MT11679112'];
         for (var i in validSamples) {
@@ -502,7 +523,7 @@ describe('vat', function() {
         }
     });
 
-    it('Dutch VAT number', function () {
+    it('Dutch VAT number', function() {
         // Valid samples
         var validSamples = ['NL004495445B01'];
         for (var i in validSamples) {
@@ -522,7 +543,7 @@ describe('vat', function() {
         }
     });
 
-    it('Polish VAT number', function () {
+    it('Polish VAT number', function() {
         // Valid samples
         var validSamples = ['PL8567346215'];
         for (var i in validSamples) {
@@ -542,7 +563,7 @@ describe('vat', function() {
         }
     });
 
-    it('Portuguese VAT number', function () {
+    it('Portuguese VAT number', function() {
         // Valid samples
         var validSamples = ['PT501964843'];
         for (var i in validSamples) {
@@ -562,7 +583,7 @@ describe('vat', function() {
         }
     });
 
-    it('Romanian VAT number', function () {
+    it('Romanian VAT number', function() {
         // Valid samples
         var validSamples = ['RO18547290'];
         for (var i in validSamples) {
@@ -582,7 +603,7 @@ describe('vat', function() {
         }
     });
 
-    it('Swedish VAT number', function () {
+    it('Swedish VAT number', function() {
         // Valid samples
         var validSamples = ['SE123456789701'];
         for (var i in validSamples) {
@@ -602,7 +623,7 @@ describe('vat', function() {
         }
     });
 
-    it('Slovenian VAT number', function () {
+    it('Slovenian VAT number', function() {
         // Valid samples
         var validSamples = ['SI50223054'];
         for (var i in validSamples) {
@@ -622,7 +643,7 @@ describe('vat', function() {
         }
     });
 
-    it('Slovak VAT number', function () {
+    it('Slovak VAT number', function() {
         // Valid samples
         var validSamples = ['SK2022749619'];
         for (var i in validSamples) {
@@ -642,29 +663,9 @@ describe('vat', function() {
         }
     });
 
-    it('South African VAT number', function () {
-        // Valid samples
-        var validSamples = ['4012345678']
-        for (var i in validSamples) {
-            this.bv.resetForm();
-            this.$vat.val(validSamples[i]);
-            this.bv.validate();
-            expect(this.bv.isValid()).toBeTruthy();
-        }
-
-        // Invalid samples
-        var invalidSamples = ['40123456789', '0123456789']
-        for (i in invalidSamples) {
-            this.bv.resetForm();
-            this.$vat.val(invalidSamples[i]);
-            this.bv.validate();
-            expect(this.bv.isValid()).toEqual(false);
-        }
-    });
-
-    is('Icelandic VAT (VSK) number', function () {
+    it('South African VAT number', function() {
         // Valid samples
-        var validSamples = ['11111', '111111']
+        var validSamples = ['ZA4012345678'];
         for (var i in validSamples) {
             this.bv.resetForm();
             this.$vat.val(validSamples[i]);
@@ -673,7 +674,7 @@ describe('vat', function() {
         }
 
         // Invalid samples
-        var invalidSamples = ['1234567', '123456ABC']
+        var invalidSamples = ['ZA40123456789', 'ZA0123456789'];
         for (i in invalidSamples) {
             this.bv.resetForm();
             this.$vat.val(invalidSamples[i]);