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:
taitus
2019-05-14 11:49:34 +02:00
committed by Javi Martín
parent 626d2b3c2b
commit d07f9312e5
2 changed files with 37 additions and 2 deletions

View File

@@ -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

View File

@@ -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"