This rule was added in rubocop-capybara 2.19.0. We were following it about 85% of the time. Now we won't have to check both have_css and have_selector when searching the code.
174 lines
5.8 KiB
Ruby
174 lines
5.8 KiB
Ruby
require "rails_helper"
|
|
require "sessions_helper"
|
|
|
|
describe "Poll Officing" do
|
|
let(:user) { create(:user) }
|
|
|
|
scenario "Access as regular user is not authorized" do
|
|
login_as(user)
|
|
|
|
visit officing_root_path
|
|
|
|
expect(page).not_to have_current_path(officing_root_path)
|
|
expect(page).to have_current_path(root_path)
|
|
expect(page).to have_content "You do not have permission to access this page"
|
|
end
|
|
|
|
scenario "Access as moderator is not authorized" do
|
|
create(:moderator, user: user)
|
|
login_as(user)
|
|
|
|
visit officing_root_path
|
|
|
|
expect(page).not_to have_current_path(officing_root_path)
|
|
expect(page).to have_current_path(root_path)
|
|
expect(page).to have_content "You do not have permission to access this page"
|
|
end
|
|
|
|
scenario "Access as manager is not authorized" do
|
|
create(:manager, user: user)
|
|
login_as(user)
|
|
|
|
visit officing_root_path
|
|
|
|
expect(page).not_to have_current_path(officing_root_path)
|
|
expect(page).to have_current_path(root_path)
|
|
expect(page).to have_content "You do not have permission to access this page"
|
|
end
|
|
|
|
scenario "Access as SDG manager is not authorized" do
|
|
Setting["feature.sdg"] = true
|
|
create(:sdg_manager, user: user)
|
|
login_as(user)
|
|
|
|
visit officing_root_path
|
|
|
|
expect(page).not_to have_current_path(officing_root_path)
|
|
expect(page).to have_current_path(root_path)
|
|
expect(page).to have_content "You do not have permission to access this page"
|
|
end
|
|
|
|
scenario "Access as a valuator is not authorized" do
|
|
create(:valuator, user: user)
|
|
login_as(user)
|
|
|
|
visit officing_root_path
|
|
|
|
expect(page).not_to have_current_path(officing_root_path)
|
|
expect(page).to have_current_path(root_path)
|
|
expect(page).to have_content "You do not have permission to access this page"
|
|
end
|
|
|
|
scenario "Access as an administrator is not authorized" do
|
|
create(:administrator, user: user)
|
|
login_as(user)
|
|
|
|
visit officing_root_path
|
|
|
|
expect(page).not_to have_current_path(officing_root_path)
|
|
expect(page).to have_current_path(root_path)
|
|
expect(page).to have_content "You do not have permission to access this page"
|
|
end
|
|
|
|
scenario "Access as an administrator with poll officer role is authorized" do
|
|
create(:administrator, user: user)
|
|
create(:poll_officer, user: user)
|
|
login_as(user)
|
|
visit root_path
|
|
|
|
click_link "Menu"
|
|
click_link "Polling officers"
|
|
|
|
expect(page).to have_current_path(officing_root_path)
|
|
expect(page).not_to have_content "You do not have permission to access this page"
|
|
end
|
|
|
|
scenario "Access as a poll officer is authorized" do
|
|
create(:poll_officer, user: user)
|
|
login_as(user)
|
|
visit root_path
|
|
|
|
click_link "Menu"
|
|
click_link "Polling officers"
|
|
|
|
expect(page).to have_current_path(officing_root_path)
|
|
expect(page).to have_css "#officing_menu"
|
|
expect(page).not_to have_link "Polling officers"
|
|
expect(page).not_to have_css "#valuation_menu"
|
|
expect(page).not_to have_css "#admin_menu"
|
|
expect(page).not_to have_css "#moderation_menu"
|
|
expect(page).not_to have_content "You do not have permission to access this page"
|
|
end
|
|
|
|
scenario "Officing dashboard available for multiple sessions", :with_frozen_time do
|
|
poll = create(:poll)
|
|
booth = create(:poll_booth)
|
|
booth_assignment = create(:poll_booth_assignment, poll: poll, booth: booth)
|
|
|
|
officer1 = create(:poll_officer)
|
|
officer2 = create(:poll_officer)
|
|
|
|
create(:poll_shift, officer: officer1, booth: booth, date: Date.current, task: :vote_collection)
|
|
create(:poll_shift, officer: officer2, booth: booth, date: Date.current, task: :vote_collection)
|
|
|
|
create(:poll_officer_assignment, booth_assignment: booth_assignment, officer: officer1)
|
|
create(:poll_officer_assignment, booth_assignment: booth_assignment, officer: officer2)
|
|
|
|
in_browser(:one) do
|
|
login_as officer1.user
|
|
visit officing_root_path
|
|
end
|
|
|
|
in_browser(:two) do
|
|
login_as officer2.user
|
|
visit officing_root_path
|
|
end
|
|
|
|
in_browser(:one) do
|
|
expect(page).to have_content("Here you can validate user documents and store voting results")
|
|
|
|
visit new_officing_residence_path
|
|
expect(page).to have_css "#residence_document_type"
|
|
|
|
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"
|
|
click_button "Confirm vote"
|
|
expect(page).to have_content "Vote introduced!"
|
|
expect(Poll::Voter.where(document_number: "12345678Z",
|
|
poll_id: poll,
|
|
origin: "booth",
|
|
officer_id: officer1)
|
|
.count).to be(1)
|
|
|
|
visit final_officing_polls_path
|
|
expect(page).to have_content("Polls ready for final recounting")
|
|
end
|
|
|
|
in_browser(:two) do
|
|
expect(page).to have_content("Here you can validate user documents and store voting results")
|
|
|
|
visit new_officing_residence_path
|
|
expect(page).to have_css "#residence_document_type"
|
|
|
|
select "DNI", from: "residence_document_type"
|
|
fill_in "residence_document_number", with: "12345678Y"
|
|
fill_in "residence_year_of_birth", with: "1980"
|
|
click_button "Validate document"
|
|
expect(page).to have_content "Document verified with Census"
|
|
click_button "Confirm vote"
|
|
expect(page).to have_content "Vote introduced!"
|
|
expect(Poll::Voter.where(document_number: "12345678Y",
|
|
poll_id: poll,
|
|
origin: "booth",
|
|
officer_id: officer2)
|
|
.count).to be(1)
|
|
|
|
visit final_officing_polls_path
|
|
expect(page).to have_content("Polls ready for final recounting")
|
|
end
|
|
end
|
|
end
|