require 'rails_helper'

feature 'Moderate users' do

  scenario 'Hide' do
    citizen = create(:user)
    moderator = create(:moderator)

    debate1 = create(:debate, author: citizen)
    debate2 = create(:debate, author: citizen)
    debate3 = create(:debate)
    comment3 = create(:comment, user: citizen, commentable: debate3, body: 'SPAMMER')

    login_as(moderator.user)
    visit debates_path

    expect(page).to have_content(debate1.title)
    expect(page).to have_content(debate2.title)
    expect(page).to have_content(debate3.title)

    visit debate_path(debate3)

    expect(page).to have_content(comment3.body)

    visit debate_path(debate1)

    within("#debate_#{debate1.id}") do
      click_link 'Hide author'
    end

    expect(current_path).to eq(debates_path)
    expect(page).to_not have_content(debate1.title)
    expect(page).to_not have_content(debate2.title)
    expect(page).to have_content(debate3.title)

    visit debate_path(debate3)

    expect(page).to_not have_content(comment3.body)

    click_link("Sign out")

    visit root_path

    click_link 'Sign in'
    fill_in 'user_email',    with: citizen.email
    fill_in 'user_password', with: citizen.password
    click_button 'Enter'

    expect(page).to have_content 'Invalid email or password'
    expect(current_path).to eq(new_user_session_path)
  end

  scenario 'Search and ban users' do
    citizen = create(:user, username: 'Wanda Maximoff')
    moderator = create(:moderator)

    login_as(moderator.user)

    visit moderation_users_path

    expect(page).not_to have_content citizen.name
    fill_in 'name_or_email', with: 'Wanda'
    click_button 'Search'

    within("#moderation_users") do
        expect(page).to have_content citizen.name
        expect(page).not_to have_content "Blocked"
        click_link 'Block'
    end

    within("#moderation_users") do
      expect(page).to have_content citizen.name
      expect(page).to have_content "Blocked"
    end
  end

end
