Redefine postal code verification methods to use setting config parameter
This commit is contained in:
committed by
Javi Martín
parent
bcce43fd0f
commit
f4512b2117
@@ -1,26 +0,0 @@
|
|||||||
require_dependency Rails.root.join("app", "models", "verification", "residence").to_s
|
|
||||||
|
|
||||||
class Verification::Residence
|
|
||||||
validate :local_postal_code
|
|
||||||
validate :local_residence
|
|
||||||
|
|
||||||
def local_postal_code
|
|
||||||
errors.add(:postal_code, I18n.t("verification.residence.new.error_not_allowed_postal_code")) unless valid_postal_code?
|
|
||||||
end
|
|
||||||
|
|
||||||
def local_residence
|
|
||||||
return if errors.any?
|
|
||||||
|
|
||||||
unless residency_valid?
|
|
||||||
errors.add(:local_residence, false)
|
|
||||||
store_failed_attempt
|
|
||||||
Lock.increase_tries(user)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def valid_postal_code?
|
|
||||||
postal_code =~ /^280/
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -177,6 +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",
|
||||||
"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": "",
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ class Verification::Residence
|
|||||||
validate :allowed_age
|
validate :allowed_age
|
||||||
validate :document_number_uniqueness
|
validate :document_number_uniqueness
|
||||||
|
|
||||||
|
validate :local_postal_code
|
||||||
|
validate :local_residence
|
||||||
|
|
||||||
def initialize(attrs = {})
|
def initialize(attrs = {})
|
||||||
self.date_of_birth = parse_date("date_of_birth", attrs)
|
self.date_of_birth = parse_date("date_of_birth", attrs)
|
||||||
attrs = remove_date("date_of_birth", attrs)
|
attrs = remove_date("date_of_birth", attrs)
|
||||||
@@ -73,6 +76,20 @@ class Verification::Residence
|
|||||||
@census_data.gender
|
@census_data.gender
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def local_postal_code
|
||||||
|
errors.add(:postal_code, I18n.t("verification.residence.new.error_not_allowed_postal_code")) unless valid_postal_code?
|
||||||
|
end
|
||||||
|
|
||||||
|
def local_residence
|
||||||
|
return if errors.any?
|
||||||
|
|
||||||
|
unless residency_valid?
|
||||||
|
errors.add(:local_residence, false)
|
||||||
|
store_failed_attempt
|
||||||
|
Lock.increase_tries(user)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def retrieve_census_data
|
def retrieve_census_data
|
||||||
@@ -88,4 +105,10 @@ class Verification::Residence
|
|||||||
def clean_document_number
|
def clean_document_number
|
||||||
self.document_number = document_number.gsub(/[^a-z0-9]+/i, "").upcase if document_number.present?
|
self.document_number = document_number.gsub(/[^a-z0-9]+/i, "").upcase if document_number.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def valid_postal_code?
|
||||||
|
postal_codes = Setting["postal_codes"].gsub("-", "..").split(",")
|
||||||
|
postal_codes = postal_codes.map { |i| eval(i) }.map { |i| i.is_a?(Range) ? i.to_a : [i] }.flatten
|
||||||
|
postal_code.to_i.in?(postal_codes)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ en:
|
|||||||
meta_keywords_description: 'Keywords <meta name="keywords">, used to improve SEO'
|
meta_keywords_description: 'Keywords <meta name="keywords">, used to improve SEO'
|
||||||
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"
|
||||||
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.
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ es:
|
|||||||
meta_keywords_description: 'Palabras clave <meta name="keywords">, utilizadas para mejorar el SEO'
|
meta_keywords_description: 'Palabras clave <meta name="keywords">, utilizadas para mejorar el SEO'
|
||||||
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"
|
||||||
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
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
require "rails_helper"
|
|
||||||
|
|
||||||
describe Verification::Residence do
|
|
||||||
let(:residence) { build(:verification_residence, document_number: "12345678Z") }
|
|
||||||
|
|
||||||
describe "verification" do
|
|
||||||
describe "postal code" do
|
|
||||||
it "is valid with postal codes starting with 280" do
|
|
||||||
residence.postal_code = "28012"
|
|
||||||
residence.valid?
|
|
||||||
expect(residence.errors[:postal_code]).to be_empty
|
|
||||||
|
|
||||||
residence.postal_code = "28023"
|
|
||||||
residence.valid?
|
|
||||||
expect(residence.errors[:postal_code]).to be_empty
|
|
||||||
end
|
|
||||||
|
|
||||||
it "is not valid with postal codes not starting with 280" do
|
|
||||||
residence.postal_code = "12345"
|
|
||||||
residence.valid?
|
|
||||||
expect(residence.errors[:postal_code].size).to eq(1)
|
|
||||||
|
|
||||||
residence.postal_code = "13280"
|
|
||||||
residence.valid?
|
|
||||||
expect(residence.errors[:postal_code]).to eq ["In order to be verified, you must be registered."]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -46,6 +46,49 @@ describe Verification::Residence do
|
|||||||
residence.terms_of_service = nil
|
residence.terms_of_service = nil
|
||||||
expect(residence).not_to be_valid
|
expect(residence).not_to be_valid
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "postal code" do
|
||||||
|
before { Setting["postal_codes"] = "28001-28100,28200" }
|
||||||
|
|
||||||
|
it "is valid with postal codes included in settings" do
|
||||||
|
residence.postal_code = "28012"
|
||||||
|
residence.valid?
|
||||||
|
|
||||||
|
expect(residence.errors[:postal_code]).to be_empty
|
||||||
|
|
||||||
|
residence.postal_code = "28001"
|
||||||
|
residence.valid?
|
||||||
|
|
||||||
|
expect(residence.errors[:postal_code]).to be_empty
|
||||||
|
|
||||||
|
residence.postal_code = "28100"
|
||||||
|
residence.valid?
|
||||||
|
|
||||||
|
expect(residence.errors[:postal_code]).to be_empty
|
||||||
|
|
||||||
|
residence.postal_code = "28200"
|
||||||
|
residence.valid?
|
||||||
|
|
||||||
|
expect(residence.errors[:postal_code]).to be_empty
|
||||||
|
end
|
||||||
|
|
||||||
|
it "is not valid with postal codes not included in settings" do
|
||||||
|
residence.postal_code = "12345"
|
||||||
|
residence.valid?
|
||||||
|
|
||||||
|
expect(residence.errors[:postal_code].size).to eq(1)
|
||||||
|
|
||||||
|
residence.postal_code = "28000"
|
||||||
|
residence.valid?
|
||||||
|
|
||||||
|
expect(residence.errors[:postal_code].size).to eq(1)
|
||||||
|
|
||||||
|
residence.postal_code = "28101"
|
||||||
|
residence.valid?
|
||||||
|
|
||||||
|
expect(residence.errors[:postal_code]).to eq ["In order to be verified, you must be registered."]
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "new" do
|
describe "new" do
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ describe "Residence" do
|
|||||||
select "1997", from: "residence_date_of_birth_1i"
|
select "1997", from: "residence_date_of_birth_1i"
|
||||||
select "January", from: "residence_date_of_birth_2i"
|
select "January", from: "residence_date_of_birth_2i"
|
||||||
select "1", from: "residence_date_of_birth_3i"
|
select "1", from: "residence_date_of_birth_3i"
|
||||||
fill_in "residence_postal_code", with: "12345"
|
fill_in "residence_postal_code", with: "00000"
|
||||||
check "residence_terms_of_service"
|
check "residence_terms_of_service"
|
||||||
|
|
||||||
click_button "Verify residence"
|
click_button "Verify residence"
|
||||||
|
|||||||
Reference in New Issue
Block a user