require "rails_helper"

describe "Sessions" do
  scenario "Staying in the same page after doing login/logout" do
    user = create(:user, sign_in_count: 10)
    debate = create(:debate)

    visit debate_path(debate)
    click_link "Sign in"
    fill_in "user_login", with: user.email
    fill_in "user_password", with: user.password
    click_button "Enter"

    expect(page).to have_content("You have been signed in successfully")
    expect(page).to have_current_path(debate_path(debate))

    within("#notice") { click_button "Close" }

    click_button "Sign out"

    expect(page).to have_content("You have been signed out successfully")
    expect(page).to have_current_path(debate_path(debate))
  end

  scenario "Sign in redirects keeping GET parameters" do
    create(:user, :level_two, email: "dev@consul.dev", password: "consuldev")
    heading = create(:budget_heading, name: "outskirts")

    visit budget_investments_path(heading.budget, heading_id: "outskirts")
    click_link "Sign in"
    fill_in "user_login",    with: "dev@consul.dev"
    fill_in "user_password", with: "consuldev"
    click_button "Enter"

    expect(page).to have_current_path budget_investments_path(heading.budget, heading_id: "outskirts")
  end

  scenario "Sign in redirects to the homepage if the user was there" do
    user = create(:user, :level_two)

    visit debates_path

    expect(page).to have_content "Help with debates"

    visit "/"

    expect(page).to have_content "Most active proposals"

    click_link "Sign in"
    fill_in "user_login", with: user.email
    fill_in "user_password", with: user.password
    click_button "Enter"

    expect(page).to have_current_path "/"
  end

  scenario "Sign out does not redirect to POST requests URLs" do
    login_as(create(:user))

    visit account_path
    click_link "Verify my account"
    click_button "Verify residence"

    expect(page).to have_content(/errors prevented the verification of your residence/)

    click_button "Sign out"

    expect(page).to have_content "You must sign in or register to continue."
    expect(page).to have_current_path new_user_session_path
  end
end
