Note we usually cannot make it simple because officer assignments are usually assigned to both a poll and a booth, and on a certain date. However, in the few cases where the booth nor the date don't matter, we can make the code a bit easier to read.
50 lines
1.1 KiB
Ruby
50 lines
1.1 KiB
Ruby
require "rails_helper"
|
|
|
|
describe "Officer Assignments" do
|
|
|
|
before do
|
|
admin = create(:administrator)
|
|
login_as(admin.user)
|
|
end
|
|
|
|
scenario "Index" do
|
|
poll = create(:poll)
|
|
|
|
create(:poll_officer, name: "Bubbles", polls: [poll])
|
|
create(:poll_officer, name: "Blossom", polls: [poll])
|
|
create(:poll_officer, name: "Buttercup")
|
|
|
|
visit admin_poll_path(poll)
|
|
|
|
click_link "Officers (2)"
|
|
|
|
within("#officer_assignments") do
|
|
expect(page).to have_content "Bubbles"
|
|
expect(page).to have_content "Blossom"
|
|
expect(page).not_to have_content "Buttercup"
|
|
end
|
|
end
|
|
|
|
scenario "Search", :js do
|
|
poll = create(:poll)
|
|
|
|
create(:poll_officer, name: "John Snow", polls: [poll])
|
|
create(:poll_officer, name: "John Silver", polls: [poll])
|
|
create(:poll_officer, name: "John Edwards")
|
|
|
|
visit admin_poll_path(poll)
|
|
|
|
click_link "Officers (2)"
|
|
|
|
fill_in "search-officers", with: "John"
|
|
click_button "Search"
|
|
|
|
within("#search-officers-results") do
|
|
expect(page).to have_content "John Snow"
|
|
expect(page).to have_content "John Silver"
|
|
expect(page).not_to have_content "John Edwards"
|
|
end
|
|
end
|
|
|
|
end
|