diff --git a/app/models/verification/residence.rb b/app/models/verification/residence.rb index 945194ebb..f28e68b89 100644 --- a/app/models/verification/residence.rb +++ b/app/models/verification/residence.rb @@ -1,9 +1,12 @@ class Verification::Residence include ActiveModel::Model include ActiveModel::Dates + include ActiveModel::Validations::Callbacks attr_accessor :user, :document_number, :document_type, :date_of_birth, :postal_code, :terms_of_service + before_validation :call_census_api + validates_presence_of :document_number validates_presence_of :document_type validates_presence_of :date_of_birth @@ -24,11 +27,10 @@ class Verification::Residence end def save - @census_api_response = CensusApi.new.call(document_type, document_number) return false unless valid? user.update(document_number: document_number, document_type: document_type, - geozone: geozone, + geozone: self.geozone, residence_verified_at: Time.now) end @@ -66,14 +68,18 @@ class Verification::Residence }) end + def geozone + Geozone.where(census_code: district_code).first! + end + def district_code @census_api_response.district_code end private - def geozone - Geozone.find_by!(census_code: district_code) + def call_census_api + @census_api_response = CensusApi.new.call(document_type, document_number) end def residency_valid? diff --git a/spec/models/residence_spec.rb b/spec/models/residence_spec.rb index 412a876d1..13cce2b1b 100644 --- a/spec/models/residence_spec.rb +++ b/spec/models/residence_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' describe Verification::Residence do - let(:geozone) { create(:geozone, census_code: "01") } + let!(:geozone) { create(:geozone, census_code: "01") } let(:residence) { build(:verification_residence, document_number: "12345678Z") } describe "validations" do