diff --git a/app/models/verification/residence.rb b/app/models/verification/residence.rb index 062e191a1..935f6bfb0 100644 --- a/app/models/verification/residence.rb +++ b/app/models/verification/residence.rb @@ -5,8 +5,6 @@ class Verification::Residence attr_accessor :user, :document_number, :document_type, :date_of_birth, :postal_code, :terms_of_service - before_validation :retrieve_census_data - validates :document_number, presence: true validates :document_type, presence: true validates :date_of_birth, presence: true @@ -69,11 +67,11 @@ class Verification::Residence end def district_code - @census_data.district_code + census_data.district_code end def gender - @census_data.gender + census_data.gender end def local_postal_code @@ -92,14 +90,14 @@ class Verification::Residence private - def retrieve_census_data - @census_data = CensusCaller.new.call(document_type, document_number, date_of_birth, postal_code) + def census_data + @census_data ||= CensusCaller.new.call(document_type, document_number, date_of_birth, postal_code) end def residency_valid? - @census_data.valid? && - @census_data.postal_code == postal_code && - @census_data.date_of_birth == date_of_birth + census_data.valid? && + census_data.postal_code == postal_code && + census_data.date_of_birth == date_of_birth end def clean_document_number diff --git a/spec/models/verification/residence_spec.rb b/spec/models/verification/residence_spec.rb index bc6995f59..ae4b2b829 100644 --- a/spec/models/verification/residence_spec.rb +++ b/spec/models/verification/residence_spec.rb @@ -48,44 +48,39 @@ describe Verification::Residence do end describe "postal code" do - before { Setting["postal_codes"] = "28001-28100,28200" } + before do + Setting["postal_codes"] = "28001-28100,28200" + + census_data = double(valid?: true, district_code: "", gender: "") + allow(census_data).to receive(:postal_code) { residence.postal_code } + allow(census_data).to receive(:date_of_birth) { residence.date_of_birth } + allow(residence).to receive(:census_data).and_return(census_data) + end it "is valid with postal codes included in settings" do residence.postal_code = "28012" - residence.valid? - - expect(residence.errors[:postal_code]).to be_empty + expect(residence).to be_valid residence.postal_code = "28001" - residence.valid? - - expect(residence.errors[:postal_code]).to be_empty + expect(residence).to be_valid residence.postal_code = "28100" - residence.valid? - - expect(residence.errors[:postal_code]).to be_empty + expect(residence).to be_valid residence.postal_code = "28200" - residence.valid? - - expect(residence.errors[:postal_code]).to be_empty + expect(residence).to be_valid 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) + expect(residence).not_to be_valid residence.postal_code = "28000" - residence.valid? - - expect(residence.errors[:postal_code].size).to eq(1) + expect(residence).not_to be_valid residence.postal_code = "28101" - residence.valid? - + expect(residence).not_to be_valid + expect(residence.errors.count).to eq 1 expect(residence.errors[:postal_code]).to eq ["In order to be verified, you must be registered."] end end