require 'rails_helper'

feature 'Account' do

  background do
    @user = create(:user, username: "Manuela Colau")
    login_as(@user)
  end

  scenario 'Show' do
    visit root_path

    click_link "My account"

    expect(current_path).to eq(account_path)

    expect(page).to have_selector("input[value='Manuela Colau']")
    expect(page).to have_selector(avatar('Manuela Colau'), count: 1)
  end

  scenario 'Show organization' do
    create(:organization, user: @user, name: "Manuela Corp")

    visit account_path

    expect(page).to have_selector("input[value='Manuela Corp']")
    expect(page).to_not have_selector("input[value='Manuela Colau']")

    expect(page).to have_selector(avatar('Manuela Corp'), count: 1)
  end

  scenario 'Edit' do
    visit account_path

    fill_in 'account_username', with: 'Larry Bird'
    check 'account_email_on_debate_comment'
    check 'account_email_on_comment_reply'
    click_button 'Save changes'

    expect(page).to have_content "Saved"

    visit account_path

    expect(page).to have_selector("input[value='Larry Bird']")
    expect(page).to have_selector("input[id='account_email_on_debate_comment'][value='1']")
    expect(page).to have_selector("input[id='account_email_on_comment_reply'][value='1']")
  end

  scenario 'Edit Organization' do
    create(:organization, user: @user, name: "Manuela Corp")
    visit account_path

    fill_in 'account_organization_attributes_name', with: 'Google'
    check 'account_email_on_debate_comment'
    check 'account_email_on_comment_reply'
    click_button 'Save changes'

    expect(page).to have_content "Saved"

    visit account_path

    expect(page).to have_selector("input[value='Google']")
    expect(page).to have_selector("input[id='account_email_on_debate_comment'][value='1']")
    expect(page).to have_selector("input[id='account_email_on_comment_reply'][value='1']")
  end

  scenario "Errors on edit" do
    visit account_path

    fill_in 'account_username', with: ''
    click_button 'Save changes'

    expect(page).to have_content error_message
  end

  scenario 'Errors editing credentials' do
    visit account_path

    click_link 'Change my credentials'
    click_button 'Update'

    expect(page).to have_content error_message
  end
end
