require "rails_helper"

describe "Admin collaborative legislation", :admin do
  context "Index" do
    scenario "Displaying legislation proposals" do
      proposal = create(:legislation_proposal, cached_votes_score: 10)

      visit admin_legislation_process_proposals_path(proposal.legislation_process_id)

      within "#legislation_proposal_#{proposal.id}" do
        expect(page).to have_content(proposal.title)
        expect(page).to have_content(proposal.id)
        expect(page).to have_content(proposal.cached_votes_score)
        expect(page).to have_content("No")
      end
    end

    scenario "Selecting legislation proposals" do
      proposal = create(:legislation_proposal, title: "Add more accessibility tests")

      visit admin_legislation_process_proposals_path(proposal.legislation_process_id)
      click_button "Select Add more accessibility tests"

      within "#legislation_proposal_#{proposal.id}" do
        expect(page).to have_content "Yes"
      end
    end

    scenario "Sorting legislation proposals by title" do
      process = create(:legislation_process)
      create(:legislation_proposal, title: "bbbb", legislation_process_id: process.id)
      create(:legislation_proposal, title: "aaaa", legislation_process_id: process.id)
      create(:legislation_proposal, title: "cccc", legislation_process_id: process.id)

      visit admin_legislation_process_proposals_path(process.id)
      click_link "Sort by title"

      within("#legislation_proposals_list") do
        within all(".legislation_proposal")[0] { expect(page).to have_content("aaaa") }
        within all(".legislation_proposal")[1] { expect(page).to have_content("bbbb") }
        within all(".legislation_proposal")[2] { expect(page).to have_content("cccc") }
      end
    end

    scenario "Sorting legislation proposals by supports" do
      process = create(:legislation_process)
      create(:legislation_proposal, cached_votes_score: 10, legislation_process_id: process.id)
      create(:legislation_proposal, cached_votes_score: 30, legislation_process_id: process.id)
      create(:legislation_proposal, cached_votes_score: 20, legislation_process_id: process.id)

      visit admin_legislation_process_proposals_path(process.id)
      click_link "Sort by total supports"

      within("#legislation_proposals_list") do
        within all(".legislation_proposal")[0] { expect(page).to have_content("30") }
        within all(".legislation_proposal")[1] { expect(page).to have_content("20") }
        within all(".legislation_proposal")[2] { expect(page).to have_content("10") }
      end
    end

    scenario "Sorting legislation proposals by Id" do
      process = create(:legislation_process)
      proposal1 = create(:legislation_proposal, title: "bbbb", legislation_process_id: process.id)
      proposal2 = create(:legislation_proposal, title: "aaaa", legislation_process_id: process.id)
      proposal3 = create(:legislation_proposal, title: "cccc", legislation_process_id: process.id)

      visit admin_legislation_process_proposals_path(process.id, order: :title)
      click_link "Sort by ID"

      within("#legislation_proposals_list") do
        within all(".legislation_proposal")[0] { expect(page).to have_content(proposal1.id) }
        within all(".legislation_proposal")[1] { expect(page).to have_content(proposal2.id) }
        within all(".legislation_proposal")[2] { expect(page).to have_content(proposal3.id) }
      end
    end
  end
end
