Files
nairobi/spec/features/officing/residence_spec.rb
Javi Martín 12cdbf6196 Simplify assigning officer to a poll in specs
While it could be argued we're hiding the real way we've defined
associations in our models, the tests are so much easier to read when we
don't have so many lines just creating data.

Furthermore, developers who care about vertically aligning the code will
be glad to see some variables disrupting this alignment are now gone.
2019-09-25 12:38:37 +02:00

185 lines
5.8 KiB
Ruby

require "rails_helper"
describe "Residence", :with_frozen_time do
let(:officer) { create(:poll_officer) }
describe "Officers without assignments" do
scenario "Can not access residence verification" do
login_as(officer.user)
visit officing_root_path
expect(page).not_to have_link("Validate document")
expect(page).to have_content("You don't have officing shifts today")
create(:poll_officer_assignment, officer: officer, date: 1.day.from_now)
visit new_officing_residence_path
expect(page).to have_content("You don't have officing shifts today")
end
end
describe "Assigned officers" do
before do
create(:poll_officer_assignment, officer: officer)
login_through_form_as_officer(officer.user)
visit officing_root_path
end
scenario "Verify voter" do
within("#side_menu") do
click_link "Validate document"
end
select "DNI", from: "residence_document_type"
fill_in "residence_document_number", with: "12345678Z"
fill_in "residence_year_of_birth", with: "1980"
click_button "Validate document"
expect(page).to have_content "Document verified with Census"
end
scenario "Error on verify" do
within("#side_menu") do
click_link "Validate document"
end
within("#new_residence") do
click_button "Validate document"
end
expect(page).to have_content(/\d errors? prevented the verification of this document/)
end
scenario "Error on Census (document number)" do
initial_failed_census_calls_count = officer.failed_census_calls_count
within("#side_menu") do
click_link "Validate document"
end
select "DNI", from: "residence_document_type"
fill_in "residence_document_number", with: "9999999A"
fill_in "residence_year_of_birth", with: "1980"
click_button "Validate document"
expect(page).to have_content "The Census was unable to verify this document"
officer.reload
fcc = FailedCensusCall.last
expect(fcc).to be
expect(fcc.poll_officer).to eq(officer)
expect(officer.failed_census_calls.last).to eq(fcc)
expect(officer.failed_census_calls_count).to eq(initial_failed_census_calls_count + 1)
end
scenario "Error on Census (year of birth)" do
within("#side_menu") do
click_link "Validate document"
end
select "DNI", from: "residence_document_type"
fill_in "residence_document_number", with: "12345678Z"
fill_in "residence_year_of_birth", with: "1981"
click_button "Validate document"
expect(page).to have_content "The Census was unable to verify this document"
end
end
scenario "Verify booth", :js do
booth = create(:poll_booth)
poll = create(:poll)
create(:poll_officer_assignment, officer: officer, poll: poll, booth: booth)
create(:poll_shift, officer: officer, booth: booth, date: Date.current)
login_as(officer.user)
visit new_officing_residence_path
within("#officing-booth") do
expect(page).to have_content "You are officing the booth located at #{booth.location}."
end
officing_verify_residence
expect(page).to have_content poll.name
click_button "Confirm vote"
expect(page).to have_content "Vote introduced!"
end
context "With remote census configuration" do
before do
Setting["feature.remote_census"] = true
Setting["remote_census.request.date_of_birth"] = "some.value"
Setting["remote_census.request.postal_code"] = "some.value"
create(:poll_officer_assignment, officer: officer)
login_through_form_as_officer(officer.user)
visit officing_root_path
end
describe "Display form fields according to the remote census configuration" do
scenario "by default (without custom census) not display date_of_birth and postal_code" do
Setting["feature.remote_census"] = false
within("#side_menu") do
click_link "Validate document"
end
expect(page).to have_css("#residence_document_type")
expect(page).to have_css("#residence_document_number")
expect(page).to have_css("#residence_year_of_birth")
expect(page).not_to have_content("Date of birth")
expect(page).not_to have_css("#residence_postal_code")
end
scenario "with all custom census not display year_of_birth" do
Setting["remote_census.request.date_of_birth"] = "some.value"
Setting["remote_census.request.postal_code"] = "some.value"
within("#side_menu") do
click_link "Validate document"
end
expect(page).to have_css("#residence_document_type")
expect(page).to have_css("#residence_document_number")
expect(page).to have_content("Date of birth")
expect(page).to have_css("#residence_postal_code")
expect(page).not_to have_css("#residence_year_of_birth")
end
end
scenario "can verify voter with date_of_birth and postal_code fields" do
access_user_data = "get_habita_datos_response.get_habita_datos_return.datos_habitante.item"
access_residence_data = "get_habita_datos_response.get_habita_datos_return.datos_vivienda.item"
Setting["remote_census.response.date_of_birth"] = "#{access_user_data}.fecha_nacimiento_string"
Setting["remote_census.response.postal_code"] = "#{access_residence_data}.codigo_postal"
Setting["remote_census.response.valid"] = access_user_data
within("#side_menu") do
click_link "Validate document"
end
select "DNI", from: "residence_document_type"
fill_in "residence_document_number", with: "12345678Z"
select_date "31-December-1980", from: "residence_date_of_birth"
fill_in "residence_postal_code", with: "28001"
click_button "Validate document"
expect(page).to have_content "Document verified with Census"
end
end
end