Allow any configuration of required fields
- Add the methods "parse_date_of_birth" and "parse_postal_code" to recover the correct position of their values depending on the configuration of the remote census.
This commit is contained in:
@@ -23,8 +23,8 @@ class SignatureSheet < ApplicationRecord
|
||||
def verify_signatures
|
||||
parsed_required_fields_to_verify_groups.each do |required_fields_to_verify|
|
||||
document_number = required_fields_to_verify[0]
|
||||
date_of_birth = required_fields_to_verify[1]
|
||||
postal_code = required_fields_to_verify[2]
|
||||
date_of_birth = parse_date_of_birth(required_fields_to_verify)
|
||||
postal_code = parse_postal_code(required_fields_to_verify)
|
||||
|
||||
signature = signatures.where(document_number: document_number,
|
||||
date_of_birth: date_of_birth,
|
||||
@@ -41,4 +41,21 @@ class SignatureSheet < ApplicationRecord
|
||||
def signable_found
|
||||
errors.add(:signable_id, :not_found) if errors.messages[:signable].present?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def parse_date_of_birth(required_fields_to_verify)
|
||||
return required_fields_to_verify[1] if Setting.force_presence_date_of_birth?
|
||||
nil
|
||||
end
|
||||
|
||||
def parse_postal_code(required_fields_to_verify)
|
||||
if Setting.force_presence_date_of_birth? && Setting.force_presence_postal_code?
|
||||
return required_fields_to_verify[2]
|
||||
elsif Setting.force_presence_postal_code?
|
||||
return required_fields_to_verify[1]
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -118,6 +118,24 @@ describe SignatureSheet do
|
||||
Setting["remote_census.request.date_of_birth"] = nil
|
||||
end
|
||||
|
||||
it "creates signatures for each group with document_number and postal_code" do
|
||||
Setting["remote_census.request.postal_code"] = "some.value"
|
||||
|
||||
required_fields_to_verify = "123A, 28001; 456B, 28002"
|
||||
signature_sheet = create(:signature_sheet, required_fields_to_verify: required_fields_to_verify)
|
||||
signature_sheet.verify_signatures
|
||||
|
||||
expect(Signature.count).to eq(2)
|
||||
expect(Signature.first.document_number).to eq("123A")
|
||||
expect(Signature.first.date_of_birth).to eq(nil)
|
||||
expect(Signature.first.postal_code).to eq("28001")
|
||||
expect(Signature.last.document_number).to eq("456B")
|
||||
expect(Signature.last.date_of_birth).to eq(nil)
|
||||
expect(Signature.last.postal_code).to eq("28002")
|
||||
|
||||
Setting["remote_census.request.postal_code"] = nil
|
||||
end
|
||||
|
||||
it "creates signatures for each group with document_number, postal_code and date_of_birth" do
|
||||
Setting["remote_census.request.date_of_birth"] = "some.value"
|
||||
Setting["remote_census.request.postal_code"] = "some.value"
|
||||
|
||||
Reference in New Issue
Block a user