require "rails_helper"

describe "Booth", :with_frozen_time do
  scenario "Officer with no booth assignments today" do
    officer = create(:poll_officer)

    login_through_form_as_officer(officer)
    visit new_officing_residence_path

    expect(page).to have_content "You don't have officing shifts today"
  end

  scenario "Officer with booth assignments another day" do
    officer = create(:poll_officer)
    create(:poll_officer_assignment, officer: officer, date: Date.current + 1.day)

    login_through_form_as_officer(officer)
    visit new_officing_residence_path

    expect(page).to have_content "You don't have officing shifts today"
  end

  scenario "Officer with single booth assignment today" do
    officer = create(:poll_officer)
    poll = create(:poll)

    booth = create(:poll_booth)

    create(:poll_officer_assignment, officer: officer, poll: poll, booth: booth, date: Date.current)

    login_through_form_as_officer(officer)
    visit new_officing_residence_path

    within("#officing-booth") do
      expect(page).to have_content "You are officing the booth located at #{booth.location}."
    end
  end

  scenario "Officer with multiple booth assignments today" do
    officer = create(:poll_officer)
    poll = create(:poll)

    booth1 = create(:poll_booth)
    booth2 = create(:poll_booth)

    create(:poll_officer_assignment, officer: officer, poll: poll, booth: booth1, date: Date.current)
    create(:poll_officer_assignment, officer: officer, poll: poll, booth: booth2, date: Date.current)

    login_through_form_as_officer(officer)
    visit new_officing_residence_path

    expect(page).to have_content "Choose your booth"

    select booth2.location, from: "Choose your booth"
    click_button "Enter"

    within("#officing-booth") do
      expect(page).to have_content "You are officing the booth located at #{booth2.location}."
    end
  end

  scenario "Display single booth for any number of polls" do
    officer = create(:poll_officer)

    booth1 = create(:poll_booth)
    booth2 = create(:poll_booth)

    poll1 = create(:poll)
    poll2 = create(:poll)

    create(:poll_officer_assignment, officer: officer, poll: poll1, booth: booth1, date: Date.current)
    create(:poll_officer_assignment, officer: officer, poll: poll2, booth: booth2, date: Date.current)
    create(:poll_officer_assignment, officer: officer, poll: poll2, booth: booth2, date: Date.current)

    login_through_form_as_officer(officer)
    visit new_officing_residence_path

    expect(page).to have_content "Choose your booth"

    expect(page).to have_select "Choose your booth", options: [booth1.location, booth2.location]
  end
end
