diff --git a/app/models/setting.rb b/app/models/setting.rb index 8c813dcc2..0488c2d2d 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -177,7 +177,7 @@ class Setting < ApplicationRecord "machine_learning.comments_summary": false, "machine_learning.related_content": false, "machine_learning.tags": false, - "postal_codes": "00001-99999", + "postal_codes": "00001:99999", "remote_census.general.endpoint": "", "remote_census.request.method_name": "", "remote_census.request.structure": "", diff --git a/app/models/verification/residence.rb b/app/models/verification/residence.rb index 384bbe474..d254ccaa6 100644 --- a/app/models/verification/residence.rb +++ b/app/models/verification/residence.rb @@ -105,8 +105,8 @@ class Verification::Residence def valid_postal_code? Setting["postal_codes"].split(",").any? do |code_or_range| - if code_or_range.include?("-") - Range.new(*code_or_range.split("-")).include?(postal_code) + if code_or_range.include?(":") + Range.new(*code_or_range.split(":")).include?(postal_code) else postal_code == code_or_range end diff --git a/config/locales/en/settings.yml b/config/locales/en/settings.yml index d94498cbf..0e8d1218b 100644 --- a/config/locales/en/settings.yml +++ b/config/locales/en/settings.yml @@ -61,6 +61,7 @@ en: min_age_to_participate: Minimum age needed to participate min_age_to_participate_description: "Users over this age can participate in all processes where a user verified account is needed" postal_codes: "Postal Codes" + postal_codes_description: "A comma-separated list of valid postal codes; you can also introduce ranges separated with a colon. Example: 00001:00010,00024,AB3 45FG,00031:00035 will allow postal codes between 00001 and 00010, the postal code 00024, the postal code AB3 45FG, and postal codes between 00031 and 00035." proposals: successful_proposal_id: Successful proposal successful_proposal_id_description: This proposal is used as a reference for a successful proposal in supports number and will be displayed in the dashboard graph. diff --git a/config/locales/es/settings.yml b/config/locales/es/settings.yml index d37261848..631ef0603 100644 --- a/config/locales/es/settings.yml +++ b/config/locales/es/settings.yml @@ -61,6 +61,7 @@ es: min_age_to_participate: Edad mínima para participar min_age_to_participate_description: "Los usuarios mayores de esta edad podrán participar en todos los procesos donde se necesite una cuenta verificada" postal_codes: "Códigos Postales" + postal_codes_description: "Una lista de códigos postales válidos separados por comas; también puedes usar rangos utilizando \":\". Ejemplo: 00001:00010,00024,AB3 45FG,00031:00035 permitirá códigos postales entre 00001 y 00010, el 00024, el AB3 45FG, y códigos postales entre 00031 y 00035." proposals: successful_proposal_id: Propuesta exitosa successful_proposal_id_description: Esta propuesta se utiliza como referencia de una propuesta exitosa en número de apoyos y se mostrará en el gráfico del panel de control diff --git a/spec/models/verification/residence_spec.rb b/spec/models/verification/residence_spec.rb index 895ea89bf..cdfee621b 100644 --- a/spec/models/verification/residence_spec.rb +++ b/spec/models/verification/residence_spec.rb @@ -49,7 +49,7 @@ describe Verification::Residence do describe "postal code" do before do - Setting["postal_codes"] = "28001-28100,28200" + Setting["postal_codes"] = "28001:28100,28200,28303-455" census_data = double(valid?: true, district_code: "", gender: "") allow(census_data).to receive(:postal_code) { residence.postal_code } @@ -69,6 +69,9 @@ describe Verification::Residence do residence.postal_code = "28200" expect(residence).to be_valid + + residence.postal_code = "28303-455" + expect(residence).to be_valid end it "uses string ranges and not integer ranges" do @@ -102,6 +105,12 @@ describe Verification::Residence do residence.postal_code = "28000" expect(residence).not_to be_valid + residence.postal_code = "28303-454" + expect(residence).not_to be_valid + + residence.postal_code = "28303" + expect(residence).not_to be_valid + residence.postal_code = "28101" expect(residence).not_to be_valid expect(residence.errors.count).to eq 1