Files
grecia/spec/features/admin/poll/officers_spec.rb
2016-09-28 18:39:01 +02:00

159 lines
4.6 KiB
Ruby

require 'rails_helper'
feature 'Admin poll officers' do
background do
@admin = create(:administrator)
@user = create(:user, username: 'Pedro Jose Garcia')
@officer = create(:poll_officer)
login_as(@admin.user)
visit admin_officers_path
end
scenario 'Index' do
expect(page).to have_content @officer.name
expect(page).to have_content @officer.email
expect(page).to_not have_content @user.name
end
scenario 'Create', :js do
fill_in 'email', with: @user.email
click_button 'Search'
expect(page).to have_content @user.name
click_link 'Add'
within("#officers") do
expect(page).to have_content @user.name
end
end
scenario 'Delete' do
click_link 'Delete'
within("#officers") do
expect(page).to_not have_content @officer.name
end
end
context "Booth" do
scenario 'No officers assigned to booth' do
poll = create(:poll)
booth = create(:poll_booth, poll: poll)
visit admin_poll_booth_path(poll, booth)
within("#assigned_officers") do
expect(page).to have_css ".officer", count: 0
end
expect(page).to have_content "There are no officers assigned to this booth"
end
scenario "Assigned to booth" do
john = create(:poll_officer)
isabel = create(:poll_officer)
eve = create(:poll_officer)
poll = create(:poll)
booth = create(:poll_booth, poll: poll)
officing_booth1 = create(:officing_booth, officer: john, booth: booth)
officing_booth2 = create(:officing_booth, officer: isabel, booth: booth)
visit admin_poll_booth_path(poll, booth)
within("#assigned_officers") do
expect(page).to have_css ".officer", count: 2
expect(page).to have_content john.name
expect(page).to have_content isabel.name
expect(page).to_not have_content eve.name
end
expect(page).to_not have_content "There are no officers assigned to this booth"
end
scenario 'Assign to booth' do
john = create(:poll_officer)
isabel = create(:poll_officer)
poll = create(:poll)
booth = create(:poll_booth, poll: poll)
visit admin_poll_booth_path(poll, booth)
check "#{john.name} - #{john.email}"
click_button "Assign officer"
expect(page).to have_content "Booth updated successfully."
within("#assigned_officers") do
expect(page).to have_css ".officer", count: 1
expect(page).to have_content john.name
end
end
scenario "Unassign from booth" do
john = create(:poll_officer)
isabel = create(:poll_officer)
poll = create(:poll)
booth = create(:poll_booth, poll: poll)
officing_booth = create(:officing_booth, officer: john, booth: booth)
officing_booth = create(:officing_booth, officer: isabel, booth: booth)
visit admin_poll_booth_path(poll, booth)
uncheck "#{john.name} - #{john.email}"
click_button "Assign officer"
expect(page).to have_content "Booth updated successfully."
within("#assigned_officers") do
expect(page).to have_css ".officer", count: 1
expect(page).to have_content isabel.name
expect(page).to_not have_content john.name
end
end
scenario "Assigned multiple officers to different booths" do
john = create(:poll_officer)
isabel = create(:poll_officer)
eve = create(:poll_officer)
peter = create(:poll_officer)
poll1 = create(:poll)
poll2 = create(:poll)
booth1 = create(:poll_booth, poll: poll1)
booth2 = create(:poll_booth, poll: poll1)
booth3 = create(:poll_booth, poll: poll2)
officing_booth = create(:officing_booth, officer: john, booth: booth1)
officing_booth = create(:officing_booth, officer: isabel, booth: booth1)
officing_booth = create(:officing_booth, officer: eve, booth: booth2)
officing_booth = create(:officing_booth, officer: peter, booth: booth3)
visit admin_poll_booth_path(poll1, booth1)
within("#assigned_officers") do
expect(page).to have_css ".officer", count: 2
expect(page).to have_content john.name
expect(page).to have_content isabel.name
end
visit admin_poll_booth_path(poll1, booth2)
within("#assigned_officers") do
expect(page).to have_css ".officer", count: 1
expect(page).to have_content eve.name
end
visit admin_poll_booth_path(poll2, booth3)
within("#assigned_officers") do
expect(page).to have_css ".officer", count: 1
expect(page).to have_content peter.name
end
end
end
end