Settings are stored in the database, and so any changes to the settings done during the tests are automatically rolled back between one test and the next one. There were also a few places where we weren't using an `after` block but changing the setting at the end of the test.
182 lines
7.0 KiB
Ruby
182 lines
7.0 KiB
Ruby
require "rails_helper"
|
|
|
|
describe SignatureSheet do
|
|
|
|
let(:signature_sheet) { build(:signature_sheet) }
|
|
|
|
describe "validations" do
|
|
|
|
it "is valid" do
|
|
expect(signature_sheet).to be_valid
|
|
end
|
|
|
|
it "is valid with a valid signable" do
|
|
signature_sheet.signable = create(:proposal)
|
|
expect(signature_sheet).to be_valid
|
|
|
|
signature_sheet.signable = create(:budget_investment)
|
|
expect(signature_sheet).to be_valid
|
|
end
|
|
|
|
it "is not valid without signable" do
|
|
signature_sheet.signable = nil
|
|
expect(signature_sheet).not_to be_valid
|
|
end
|
|
|
|
it "is not valid without a valid signable" do
|
|
signature_sheet.signable = create(:comment)
|
|
expect(signature_sheet).not_to be_valid
|
|
end
|
|
|
|
it "is not valid without document numbers" do
|
|
signature_sheet.required_fields_to_verify = nil
|
|
expect(signature_sheet).not_to be_valid
|
|
end
|
|
|
|
it "is not valid without an author" do
|
|
signature_sheet.author = nil
|
|
expect(signature_sheet).not_to be_valid
|
|
end
|
|
end
|
|
|
|
describe "#name" do
|
|
it "returns name for proposal signature sheets" do
|
|
proposal = create(:proposal)
|
|
signature_sheet.signable = proposal
|
|
|
|
expect(signature_sheet.name).to eq("Citizen proposal #{proposal.id}")
|
|
end
|
|
|
|
it "returns name for budget investment signature sheets" do
|
|
budget_investment = create(:budget_investment)
|
|
signature_sheet.signable = budget_investment
|
|
|
|
expect(signature_sheet.name).to eq("Investment #{budget_investment.id}")
|
|
end
|
|
end
|
|
|
|
describe "#verify_signatures" do
|
|
it "creates signatures for each document number" do
|
|
signature_sheet = create(:signature_sheet, required_fields_to_verify: "123A; 456B")
|
|
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(nil)
|
|
expect(Signature.last.document_number).to eq("456B")
|
|
expect(Signature.last.date_of_birth).to eq(nil)
|
|
expect(Signature.last.postal_code).to eq(nil)
|
|
end
|
|
|
|
it "marks signature sheet as processed" do
|
|
signature_sheet = create(:signature_sheet)
|
|
signature_sheet.verify_signatures
|
|
|
|
expect(signature_sheet.processed).to eq(true)
|
|
end
|
|
|
|
context "with remote census active" do
|
|
|
|
before do
|
|
Setting["feature.remote_census"] = true
|
|
end
|
|
|
|
it "creates signatures for each group with document_number" do
|
|
required_fields_to_verify = "123A; 456B"
|
|
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(nil)
|
|
expect(Signature.last.document_number).to eq("456B")
|
|
expect(Signature.last.date_of_birth).to eq(nil)
|
|
expect(Signature.last.postal_code).to eq(nil)
|
|
end
|
|
|
|
it "creates signatures for each group with document_number and date_of_birth" do
|
|
Setting["remote_census.request.date_of_birth"] = "some.value"
|
|
|
|
required_fields_to_verify = "123A, 01/01/1980; 456B, 01/02/1980"
|
|
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(Date.parse("01/01/1980"))
|
|
expect(Signature.first.postal_code).to eq(nil)
|
|
expect(Signature.last.document_number).to eq("456B")
|
|
expect(Signature.last.date_of_birth).to eq(Date.parse("01/02/1980"))
|
|
expect(Signature.last.postal_code).to eq(nil)
|
|
|
|
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"
|
|
|
|
required_fields_to_verify = "123A, 01/01/1980, 28001; 456B, 01/02/1980, 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(Date.parse("01/01/1980"))
|
|
expect(Signature.first.postal_code).to eq("28001")
|
|
expect(Signature.last.document_number).to eq("456B")
|
|
expect(Signature.last.date_of_birth).to eq(Date.parse("01/02/1980"))
|
|
expect(Signature.last.postal_code).to eq("28002")
|
|
|
|
Setting["remote_census.request.date_of_birth"] = nil
|
|
Setting["remote_census.request.postal_code"] = nil
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
describe "#parsed_required_fields_to_verify" do
|
|
it "returns an array after spliting document numbers by semicolons" do
|
|
signature_sheet.required_fields_to_verify = "123A\r\n;456B;\n789C;123B"
|
|
|
|
expect(signature_sheet.parsed_required_fields_to_verify_groups).to eq([["123A"], ["456B"], ["789C"], ["123B"]])
|
|
end
|
|
|
|
it "returns an array after spliting all required_fields_to_verify by semicolons" do
|
|
required_fields_to_verify = "123A\r\n, 01/01/1980\r\n, 28001\r\n; 456B\n, 01/02/1980\n, 28002\n; 789C, 01/03/1980"
|
|
# signature_sheet.required_fields_to_verify = "123A\r\n456B\n789C;123B"
|
|
signature_sheet.required_fields_to_verify = required_fields_to_verify
|
|
|
|
expect(signature_sheet.parsed_required_fields_to_verify_groups).to eq([["123A", "01/01/1980", "28001"], ["456B", "01/02/1980", "28002"], ["789C", "01/03/1980"]])
|
|
end
|
|
|
|
it "strips spaces between number and letter" do
|
|
signature_sheet.required_fields_to_verify = "123 A, 01/01/1980, 28001;\n456 B , 01/02/1980, 28002;\n 789C ,01/03/1980, 28 003"
|
|
|
|
expect(signature_sheet.parsed_required_fields_to_verify_groups).to eq([["123A", "01/01/1980", "28001"], ["456B", "01/02/1980", "28002"], ["789C", "01/03/1980", "28003"]])
|
|
end
|
|
end
|
|
|
|
end
|