diff --git a/app/models/verification/residence.rb b/app/models/verification/residence.rb index d782fbb6f..539c3ef12 100644 --- a/app/models/verification/residence.rb +++ b/app/models/verification/residence.rb @@ -110,7 +110,7 @@ class Verification::Residence if code_or_range.include?(":") Range.new(*code_or_range.split(":").map(&:strip)).include?(postal_code&.strip) else - postal_code&.strip == code_or_range.strip + /\A#{code_or_range.strip}\Z/.match?(postal_code&.strip) end end end diff --git a/spec/models/verification/residence_spec.rb b/spec/models/verification/residence_spec.rb index a33f8aaba..e9733c7d7 100644 --- a/spec/models/verification/residence_spec.rb +++ b/spec/models/verification/residence_spec.rb @@ -126,6 +126,58 @@ describe Verification::Residence do expect(residence).to be_valid end + it "allows regular expressions" do + Setting["postal_codes"] = "007,[A-Za-z]{2}-[0-9]{3},86" + + residence.postal_code = "007" + expect(residence).to be_valid + + residence.postal_code = "86" + expect(residence).to be_valid + + residence.postal_code = "AB-123" + expect(residence).to be_valid + + residence.postal_code = "zz-789" + expect(residence).to be_valid + + residence.postal_code = "006" + expect(residence).not_to be_valid + + residence.postal_code = "87" + expect(residence).not_to be_valid + + residence.postal_code = "AB-12" + expect(residence).not_to be_valid + + residence.postal_code = "AB-1234" + expect(residence).not_to be_valid + + residence.postal_code = "A-123" + expect(residence).not_to be_valid + + residence.postal_code = "ABC-123" + expect(residence).not_to be_valid + + residence.postal_code = "ABC-12" + expect(residence).not_to be_valid + + residence.postal_code = "AB-A12" + expect(residence).not_to be_valid + + residence.postal_code = "12A-12" + expect(residence).not_to be_valid + + residence.postal_code = "123-12" + expect(residence).not_to be_valid + + residence.postal_code = "ABC-A1" + expect(residence).not_to be_valid + + residence.postal_code = "AB-123\n123" + expect(residence).not_to be_valid + end + it "is not valid with postal codes not included in settings" do residence.postal_code = "12345" expect(residence).not_to be_valid