Browse Source

Merge pull request #1008 from jazzzz/fr_zipcode

Added France zip code validation
Phuoc Nguyen 11 years ago
parent
commit
45cef89e9f
2 changed files with 31 additions and 1 deletions
  1. 7 1
      src/js/validator/zipCode.js
  2. 24 0
      test/spec/validator/zipCode.js

+ 7 - 1
src/js/validator/zipCode.js

@@ -8,6 +8,7 @@
             CA: 'Canada',
             CZ: 'Czech Republic',
             DK: 'Denmark',
+            FR: 'France',
             GB: 'United Kingdom',
             IT: 'Italy',
             MA: 'Morocco',
@@ -27,7 +28,7 @@
             country: 'country'
         },
 
-        COUNTRY_CODES: ['BR', 'CA', 'CZ', 'DK', 'GB', 'IT', 'MA', 'NL', 'RO', 'RU', 'SE', 'SG', 'SK', 'US'],
+        COUNTRY_CODES: ['BR', 'CA', 'CZ', 'DK', 'FR', 'GB', '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,6 +89,11 @@
                     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);
+                    break;
+
                 case 'GB':
                     isValid = this._gb(value);
                     break;

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

@@ -31,6 +31,7 @@ describe('zipCode', function() {
                             '<option value="SE">Sweden</option>',
                             '<option value="SK">Slovakia</option>',
                             '<option value="GB">United Kingdom</option>',
+                            '<option value="FR">France</option>',
                         '</select>',
                     '</div>',
                 '</div>',
@@ -248,4 +249,27 @@ describe('zipCode', function() {
             expect(this.bv.isValid()).toEqual(false);
         }
     });
+
+    it('France postal code', function() {
+        this.bv.updateOption('zc', 'zipCode', 'country', 'FR');
+
+        // Valid samples
+        var validSamples = ['12340', '01230', '75116'];
+        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 = ['123 45', '12 345', '123456', '1 2345', '1234 5', '12 3 45', '1234A'];
+        for (i in invalidSamples) {
+            this.bv.resetForm();
+            this.$zipCode.val(invalidSamples[i]);
+            this.bv.validate();
+            expect(this.bv.isValid()).toEqual(false);
+        }
+    });
+
 });