require "rails_helper"

describe Admin::Poll::Officers::OfficersComponent, :admin do
  let(:existing_officer) { create(:poll_officer, name: "Old officer") }
  let(:new_officer) { build(:poll_officer, name: "New officer") }
  let(:officers) { [existing_officer, new_officer] }
  let(:component) { Admin::Poll::Officers::OfficersComponent.new(officers) }

  it "renders as many rows as officers" do
    render_inline component

    tbody = page.find("tbody")

    expect(tbody).to have_css "tr", count: 2
    expect(tbody).to have_button count: 2
  end

  it "renders button to destroy for existing officers" do
    render_inline component
    row = page.find("tr", text: "Old officer")

    expect(row).to have_button "Delete position"
    expect(row).to have_css "input[name='_method'][value='delete']", visible: :hidden
  end

  it "renders button to add for new officers" do
    render_inline component
    row = page.find("tr", text: "New officer")

    expect(row).to have_button "Add"
    expect(row).to have_css "form[method='post']"
    expect(row).not_to have_css "input[name='_method']", visible: :all
  end

  it "accepts table options" do
    render_inline Admin::Poll::Officers::OfficersComponent.new(officers, class: "my-officers-table")

    expect(page).to have_table class: "my-officers-table"
  end
end
