Allow to Management::Document works with CustomCensusAPI

- Allow receive new fields :date_of_birth and :postal_code
- Send new fields to CensusCaller call method to allow use
  on RemoteCensusAPI
This commit is contained in:
taitus
2019-05-14 12:28:40 +02:00
committed by Javi Martín
parent b9a8e5a254
commit bc36c5a987
3 changed files with 78 additions and 11 deletions

View File

@@ -2,8 +2,7 @@ class Verification::Management::Document
include ActiveModel::Model include ActiveModel::Model
include ActiveModel::Dates include ActiveModel::Dates
attr_accessor :document_type attr_accessor :document_type, :document_number, :date_of_birth, :postal_code
attr_accessor :document_number
validates :document_type, :document_number, presence: true validates :document_type, :document_number, presence: true
@@ -18,7 +17,7 @@ class Verification::Management::Document
end end
def in_census? def in_census?
response = CensusCaller.new.call(document_type, document_number, nil, nil) response = CensusCaller.new.call(document_type, document_number, date_of_birth, postal_code)
response.valid? && valid_age?(response) response.valid? && valid_age?(response)
end end

View File

@@ -56,4 +56,11 @@ FactoryBot.define do
document_number document_number
document_type "dni" document_type "dni"
end end
factory :verification_document, class: Verification::Management::Document do
document_number
document_type "1"
date_of_birth Date.new(1980, 12, 31)
postal_code "28013"
end
end end

View File

@@ -1,15 +1,76 @@
require "rails_helper" require "rails_helper"
describe Verification::Management::Document do describe Verification::Management::Document do
let(:min_age) { User.minimum_required_age }
let(:over_minium_age_date_of_birth) { Date.new((min_age + 10).years.ago.year, 12, 31) }
let(:under_minium_age_date_of_birth) { Date.new(min_age.years.ago.year, 12, 31) }
let(:just_minium_age_date_of_birth) { Date.new(min_age.years.ago.year, min_age.years.ago.month, min_age.years.ago.day) }
describe "#valid_age?" do let(:verification_document) { build(:verification_document, document_number: "12345678Z") }
it "returns false when the user is younger than the user's minimum required age" do
census_response = instance_double("CensusApi::Response", date_of_birth: under_minium_age_date_of_birth) describe "validations" do
expect(described_class.new.valid_age?(census_response)).to be false
it "is valid" do
expect(verification_document).to be_valid
end
it "is not valid without a document number" do
verification_document.document_number = nil
expect(verification_document).not_to be_valid
end
it "is not valid without a document type" do
verification_document.document_type = nil
expect(verification_document).not_to be_valid
end
it "is valid without a date of birth" do
verification_document.date_of_birth = nil
expect(verification_document).to be_valid
end
it "is valid without a postal code" do
verification_document.postal_code = nil
expect(verification_document).to be_valid
end
describe "Allowed Age" do
let(:min_age) { User.minimum_required_age }
let(:over_minium_age_date_of_birth) { Date.new((min_age + 10).years.ago.year, 12, 31) }
let(:under_minium_age_date_of_birth) { Date.new(min_age.years.ago.year, 12, 31) }
let(:just_minium_age_date_of_birth) { Date.new(min_age.years.ago.year, min_age.years.ago.month, min_age.years.ago.day) }
describe "#valid_age?" do
it "returns false when the user is younger than the user's minimum required age" do
census_response = instance_double("CensusApi::Response", date_of_birth: under_minium_age_date_of_birth)
expect(described_class.new.valid_age?(census_response)).to be false
end
it "returns true when the user has the user's minimum required age" do
census_response = instance_double("CensusApi::Response", date_of_birth: just_minium_age_date_of_birth)
expect(described_class.new.valid_age?(census_response)).to be true
end
it "returns true when the user is older than the user's minimum required age" do
census_response = instance_double("CensusApi::Response", date_of_birth: over_minium_age_date_of_birth)
expect(described_class.new.valid_age?(census_response)).to be true
end
end
describe "#under_age?" do
it "returns true when the user is younger than the user's minimum required age" do
census_response = instance_double("CensusApi::Response", date_of_birth: under_minium_age_date_of_birth)
expect(described_class.new.under_age?(census_response)).to be true
end
it "returns false when the user is user's minimum required age" do
census_response = instance_double("CensusApi::Response", date_of_birth: just_minium_age_date_of_birth)
expect(described_class.new.under_age?(census_response)).to be false
end
it "returns false when the user is older than user's minimum required age" do
census_response = instance_double("CensusApi::Response", date_of_birth: over_minium_age_date_of_birth)
expect(described_class.new.under_age?(census_response)).to be false
end
end
end
end
end end
it "returns true when the user has the user's minimum required age" do it "returns true when the user has the user's minimum required age" do