Files
nairobi/spec/system/admin/poll/booths_spec.rb
Javi Martín 92ddcb7aef Use JavaScript in system tests by default
JavaScript is used by about 98% of web users, so by testing without it
enabled, we're only testing that the application works for a very
reduced number of users.

We proceeded this way in the past because CONSUL started using Rails 4.2
and truncating the database between JavaScript tests with database
cleaner, which made these tests terribly slow.

When we upgraded to Rails 5.1 and introduced system tests, we started
using database transactions in JavaScript tests, making these tests much
faster. So now we can use JavaScript tests everywhere without critically
slowing down our test suite.
2021-04-07 14:41:06 +02:00

134 lines
3.4 KiB
Ruby

require "rails_helper"
describe "Admin booths", :admin do
scenario "Index empty" do
visit admin_root_path
within("#side_menu") do
click_link "Voting booths"
click_link "Booths location"
end
expect(page).to have_content "There are no active booths for any upcoming poll."
end
scenario "Index" do
3.times { create(:poll_booth) }
visit admin_root_path
within("#side_menu") do
click_link "Voting booths"
click_link "Booths location"
end
booths = Poll::Booth.all
booths.each do |booth|
within("#booth_#{booth.id}") do
expect(page).to have_content booth.name
expect(page).to have_content booth.location
end
end
expect(page).not_to have_content "There are no booths"
end
scenario "Available" do
booth_for_current_poll = create(:poll_booth, polls: [create(:poll, :current)])
booth_for_expired_poll = create(:poll_booth, polls: [create(:poll, :expired)])
visit admin_root_path
within("#side_menu") do
click_link "Voting booths"
click_link "Manage shifts"
end
expect(page).to have_css(".booth", count: 1)
expect(page).to have_content booth_for_current_poll.name
expect(page).not_to have_content booth_for_expired_poll.name
expect(page).not_to have_link "Edit booth"
end
scenario "Show" do
booth = create(:poll_booth)
visit admin_booths_path
expect(page).to have_content booth.name
expect(page).to have_content booth.location
end
scenario "Create" do
visit admin_booths_path
click_link "Add booth"
fill_in "poll_booth_name", with: "Upcoming booth"
fill_in "poll_booth_location", with: "39th Street, number 2, ground floor"
click_button "Create booth"
expect(page).to have_content "Booth created successfully"
visit admin_booths_path
expect(page).to have_content "Upcoming booth"
expect(page).to have_content "39th Street, number 2, ground floor"
end
scenario "Edit" do
poll = create(:poll, :current)
booth = create(:poll_booth, polls: [poll])
visit admin_booths_path
within("#booth_#{booth.id}") do
expect(page).not_to have_link "Manage shifts"
click_link "Edit booth"
end
fill_in "poll_booth_name", with: "Next booth"
fill_in "poll_booth_location", with: "40th Street, number 1, firts floor"
click_button "Update booth"
expect(page).to have_content "Booth updated successfully"
visit admin_booths_path
within("#booth_#{booth.id}") do
expect(page).to have_content "Next booth"
expect(page).to have_content "40th Street, number 1, firts floor"
end
end
scenario "Back link go back to available list when manage shifts" do
poll = create(:poll, :current)
booth = create(:poll_booth, polls: [poll])
visit available_admin_booths_path
within("#booth_#{booth.id}") do
click_link "Manage shifts"
end
click_link "Go back"
expect(page).to have_current_path(available_admin_booths_path)
end
scenario "Search" do
booth = create(:poll_booth)
visit admin_booths_path
fill_in "search", with: booth.name
click_button "Search"
expect(page).to have_css(".booth", count: 1)
fill_in "search", with: booth.location
click_button "Search"
expect(page).to have_css(".booth", count: 1)
fill_in "search", with: "Wrong search criteria"
click_button "Search"
expect(page).to have_content "There are no active booths for any upcoming poll."
end
end