Allow dashes in postal codes
In some countries, postal codes are defined with a dash in the middle, so we're using a colon to define ranges instead. We could also use two dots, like in Ruby ranges, but IMHO this would cause typos since people would enter codes separated with three dots or just one dot.
This commit is contained in:
@@ -177,7 +177,7 @@ class Setting < ApplicationRecord
|
|||||||
"machine_learning.comments_summary": false,
|
"machine_learning.comments_summary": false,
|
||||||
"machine_learning.related_content": false,
|
"machine_learning.related_content": false,
|
||||||
"machine_learning.tags": false,
|
"machine_learning.tags": false,
|
||||||
"postal_codes": "00001-99999",
|
"postal_codes": "00001:99999",
|
||||||
"remote_census.general.endpoint": "",
|
"remote_census.general.endpoint": "",
|
||||||
"remote_census.request.method_name": "",
|
"remote_census.request.method_name": "",
|
||||||
"remote_census.request.structure": "",
|
"remote_census.request.structure": "",
|
||||||
|
|||||||
@@ -105,8 +105,8 @@ class Verification::Residence
|
|||||||
|
|
||||||
def valid_postal_code?
|
def valid_postal_code?
|
||||||
Setting["postal_codes"].split(",").any? do |code_or_range|
|
Setting["postal_codes"].split(",").any? do |code_or_range|
|
||||||
if code_or_range.include?("-")
|
if code_or_range.include?(":")
|
||||||
Range.new(*code_or_range.split("-")).include?(postal_code)
|
Range.new(*code_or_range.split(":")).include?(postal_code)
|
||||||
else
|
else
|
||||||
postal_code == code_or_range
|
postal_code == code_or_range
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ en:
|
|||||||
min_age_to_participate: Minimum age needed to participate
|
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"
|
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: "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:
|
proposals:
|
||||||
successful_proposal_id: Successful proposal
|
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.
|
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.
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ es:
|
|||||||
min_age_to_participate: Edad mínima para participar
|
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"
|
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: "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:
|
proposals:
|
||||||
successful_proposal_id: Propuesta exitosa
|
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
|
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
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ describe Verification::Residence do
|
|||||||
|
|
||||||
describe "postal code" do
|
describe "postal code" do
|
||||||
before 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: "")
|
census_data = double(valid?: true, district_code: "", gender: "")
|
||||||
allow(census_data).to receive(:postal_code) { residence.postal_code }
|
allow(census_data).to receive(:postal_code) { residence.postal_code }
|
||||||
@@ -69,6 +69,9 @@ describe Verification::Residence do
|
|||||||
|
|
||||||
residence.postal_code = "28200"
|
residence.postal_code = "28200"
|
||||||
expect(residence).to be_valid
|
expect(residence).to be_valid
|
||||||
|
|
||||||
|
residence.postal_code = "28303-455"
|
||||||
|
expect(residence).to be_valid
|
||||||
end
|
end
|
||||||
|
|
||||||
it "uses string ranges and not integer ranges" do
|
it "uses string ranges and not integer ranges" do
|
||||||
@@ -102,6 +105,12 @@ describe Verification::Residence do
|
|||||||
residence.postal_code = "28000"
|
residence.postal_code = "28000"
|
||||||
expect(residence).not_to be_valid
|
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"
|
residence.postal_code = "28101"
|
||||||
expect(residence).not_to be_valid
|
expect(residence).not_to be_valid
|
||||||
expect(residence.errors.count).to eq 1
|
expect(residence.errors.count).to eq 1
|
||||||
|
|||||||
Reference in New Issue
Block a user