require "rails_helper"

describe "Admin administrator tasks", :admin do
  context "when visiting index" do
    context "and no pending tasks" do
      before do
        visit admin_dashboard_administrator_tasks_path
      end

      scenario "shows that there are no records available" do
        expect(page).to have_content("There are no resources requested")
      end
    end

    context "and actions defined" do
      let!(:task) { create(:dashboard_administrator_task, :pending) }

      before do
        visit admin_dashboard_administrator_tasks_path
      end

      scenario "shows the task data" do
        expect(page).to have_content(task.source.proposal.title)
        expect(page).to have_content(task.source.action.title)
      end

      scenario "has a link that allows solving the request" do
        expect(page).to have_link("Solve")
      end
    end
  end

  context "when solving a task" do
    let!(:task) { create(:dashboard_administrator_task, :pending) }

    before do
      visit admin_dashboard_administrator_tasks_path
      click_link "Solve"
    end

    scenario "Shows task details and link to proposal" do
      expect(page).to have_link(task.source.proposal.title)
      expect(page).to have_content(task.source.action.title)
    end

    scenario "contains a button that solves the request" do
      expect(page).to have_button("Mark as solved")
    end

    scenario "After it is solved appears on solved filter" do
      click_button "Mark as solved"

      expect(page).not_to have_link(task.source.proposal.title)
      expect(page).not_to have_content(task.source.action.title)
      expect(page).to have_content("The task has been marked as solved")

      within("#filter-subnav") do
        click_link "Solved"
      end

      expect(page).to have_content(task.source.proposal.title)
      expect(page).to have_content(task.source.action.title)
      expect(page).not_to have_link("Solve")
    end
  end
end
