For the HashAlignment rule, we're using the default `key` style (keys are aligned and values aren't) instead of the `table` style (both keys and values are aligned) because, even if we used both in the application, we used the `key` style a lot more. Furthermore, the `table` style looks strange in places where there are both very long and very short keys and sometimes we weren't even consistent with the `table` style, aligning some keys without aligning other keys. Ideally we could align hashes to "either key or table", so developers can decide whether keeping the symmetry of the code is worth it in a case-per-case basis, but Rubocop doesn't allow this option.
119 lines
5.0 KiB
Ruby
119 lines
5.0 KiB
Ruby
require "rails_helper"
|
|
|
|
describe Verification::Management::Document do
|
|
let(:verification_document) { build(:verification_document, document_number: "12345678Z") }
|
|
|
|
describe "validations" do
|
|
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 "custom validations with RemoteCensus enabled", :remote_census do
|
|
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 not valid without a date of birth" do
|
|
verification_document.date_of_birth = nil
|
|
|
|
expect(verification_document).not_to be_valid
|
|
end
|
|
|
|
it "is not valid without a postal_code" do
|
|
verification_document.postal_code = nil
|
|
|
|
expect(verification_document).not_to be_valid
|
|
end
|
|
|
|
describe "dates" do
|
|
it "is valid with a valid date of birth" do
|
|
verification_document = Verification::Management::Document.new("date_of_birth(3i)" => "1",
|
|
"date_of_birth(2i)" => "1",
|
|
"date_of_birth(1i)" => "1980")
|
|
|
|
expect(verification_document.errors[:date_of_birth]).to be_empty
|
|
end
|
|
|
|
it "is not valid without a date of birth" do
|
|
verification_document = Verification::Management::Document.new("date_of_birth(3i)" => "",
|
|
"date_of_birth(2i)" => "",
|
|
"date_of_birth(1i)" => "")
|
|
expect(verification_document).not_to be_valid
|
|
expect(verification_document.errors[:date_of_birth]).to include("can't be blank")
|
|
end
|
|
end
|
|
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(Verification::Management::Document.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(Verification::Management::Document.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(Verification::Management::Document.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(Verification::Management::Document.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(Verification::Management::Document.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(Verification::Management::Document.new.under_age?(census_response)).to be false
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|