Browse Source

Merge branch 'zmira-master'

Phuoc Nguyen 11 years ago
parent
commit
2e4128e8fe
2 changed files with 32 additions and 2 deletions
  1. 9 2
      src/js/validator/zipCode.js
  2. 23 0
      test/spec/validator/zipCode.js

+ 9 - 2
src/js/validator/zipCode.js

@@ -10,6 +10,7 @@
             DK: 'Denmark',
             FR: 'France',
             GB: 'United Kingdom',
+            IE: 'Ireland',
             IT: 'Italy',
             MA: 'Morocco',
             NL: 'Netherlands',
@@ -28,7 +29,7 @@
             country: 'country'
         },
 
-        COUNTRY_CODES: ['BR', 'CA', 'CZ', 'DK', 'FR', 'GB', 'IT', 'MA', 'NL', 'RO', 'RU', 'SE', 'SG', 'SK', 'US'],
+        COUNTRY_CODES: ['BR', 'CA', 'CZ', 'DK', 'FR', 'GB', 'IE', 'IT', 'MA', 'NL', 'RO', 'RU', 'SE', 'SG', 'SK', 'US'],
 
         /**
          * Return true if and only if the input value is a valid country zip code
@@ -88,7 +89,7 @@
                 case 'DK':
                     isValid = /^(DK(-|\s)?)?\d{4}$/i.test(value);
                     break;
-
+                    
                 // http://en.wikipedia.org/wiki/Postal_codes_in_France
                 case 'FR':
                     isValid = /^[0-9]{5}$/i.test(value);
@@ -97,6 +98,12 @@
                 case 'GB':
                     isValid = this._gb(value);
                     break;
+                
+                // http://www.eircode.ie/docs/default-source/Common/prepare-your-business-for-eircode---published-v2.pdf?sfvrsn=2
+                // Test: http://refiddle.com/1kpl
+                case 'IE':
+                    isValid = /^(D6W|[ACDEFHKNPRTVWXY]\d{2})\s[0-9ACDEFHKNPRTVWXY]{4}$/.test(value);
+                    break;
 
                 // http://en.wikipedia.org/wiki/List_of_postal_codes_in_Italy
                 case 'IT':

+ 23 - 0
test/spec/validator/zipCode.js

@@ -27,6 +27,7 @@ describe('zipCode', function() {
                             '<option value="DK">Denmark</option>',
                             '<option value="FR">France</option>',
                             '<option value="GB">United Kingdom</option>',
+                            '<option value="IE">Ireland</option>',
                             '<option value="IT">Italy</option>',
                             '<option value="NL">Netherlands</option>',
                             '<option value="SE">Sweden</option>',
@@ -271,4 +272,26 @@ describe('zipCode', function() {
             expect(this.bv.isValid()).toEqual(false);
         }
     });
+    
+    it('Eircode (Ireland postal code)', function() {
+        this.bv.updateOption('zc', 'zipCode', 'country', 'IE');
+
+        // Valid samples
+        var validSamples = ['A65 F4E2', 'D6W FNT4', 'T37 F8HK'];
+        for (var i in validSamples) {
+            this.bv.resetForm();
+            this.$zipCode.val(validSamples[i]);
+            this.bv.validate();
+            expect(this.bv.isValid()).toBeTruthy();
+        }
+
+        // Invalid samples
+        var invalidSamples = ['a65 f4e2', 'D6W FNTO', 'T37F8HK'];
+        for (i in invalidSamples) {
+            this.bv.resetForm();
+            this.$zipCode.val(invalidSamples[i]);
+            this.bv.validate();
+            expect(this.bv.isValid()).toEqual(false);
+        }
+    });
 });