class Profile < Spinach::FeatureSteps
  include SharedAuthentication
  include SharedPaths

  Then 'I should see my profile info' do
    page.should have_content "Profile"
    page.should have_content @user.name
    page.should have_content @user.email
  end

  Then 'I change my contact info' do
    fill_in "user_skype", :with => "testskype"
    fill_in "user_linkedin", :with => "testlinkedin"
    fill_in "user_twitter", :with => "testtwitter"
    click_button "Save"
    @user.reload
  end

  And 'I should see new contact info' do
    @user.skype.should == 'testskype'
    @user.linkedin.should == 'testlinkedin'
    @user.twitter.should == 'testtwitter'
  end

  Then 'I change my password' do
    within '.update-password' do
      fill_in "user_password", :with => "222333"
      fill_in "user_password_confirmation", :with => "222333"
      click_button "Save"
    end
  end

  When 'I unsuccessfully change my password' do
    within '.update-password' do
      fill_in "user_password", with: "password"
      fill_in "user_password_confirmation", with: "confirmation"
      click_button "Save"
    end
  end

  Then "I should see a password error message" do
    page.should have_content "Password doesn't match confirmation"
  end

  And 'I should be redirected to sign in page' do
    current_path.should == new_user_session_path
  end

  Then 'I reset my token' do
    within '.update-token' do
      @old_token = @user.private_token
      click_button "Reset"
    end
  end

  And 'I should see new token' do
    find("#token").value.should_not == @old_token
    find("#token").value.should == @user.reload.private_token
  end

  Given 'I have activity' do
    create(:closed_issue_event, author: current_user)
  end

  Then 'I should see my activity' do
    page.should have_content "#{current_user.name} closed issue"
  end

  When "I change my application theme" do
    choose "Violet"
  end

  When "I change my code preview theme" do
    choose "Dark code preview"
  end

  Then "I should see the theme change immediately" do
    page.should have_selector('body.ui_color')
    page.should_not have_selector('body.ui_basic')
  end

  Then "I should receive feedback that the changes were saved" do
    page.should have_content("Saved")
  end
end
