227 lines
6.5 KiB
Ruby
227 lines
6.5 KiB
Ruby
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(page).to have_current_path(account_path, ignore_query: true)
|
|
|
|
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).not_to 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_comment'
|
|
check 'account_email_on_comment_reply'
|
|
uncheck 'account_email_digest'
|
|
uncheck 'account_email_on_direct_message'
|
|
click_button 'Save changes'
|
|
|
|
expect(page).to have_content "Changes saved"
|
|
|
|
visit account_path
|
|
|
|
expect(page).to have_selector("input[value='Larry Bird']")
|
|
expect(find("#account_email_on_comment")).to be_checked
|
|
expect(find("#account_email_on_comment_reply")).to be_checked
|
|
expect(find("#account_email_digest")).not_to be_checked
|
|
expect(find("#account_email_on_direct_message")).not_to be_checked
|
|
end
|
|
|
|
scenario 'Edit email address' do
|
|
visit account_path
|
|
|
|
click_link "Change my credentials"
|
|
fill_in "user_email", with: "new_user_email@example.com"
|
|
fill_in "user_password", with: "new_password"
|
|
fill_in "user_password_confirmation", with: "new_password"
|
|
fill_in "user_current_password", with: "judgmentday"
|
|
|
|
click_button "Update"
|
|
|
|
notice = 'Your account has been updated successfully;'\
|
|
' however, we need to verify your new email address.'\
|
|
' Please check your email and click on the link to'\
|
|
' complete the confirmation of your new email address.'
|
|
expect(page).to have_content notice
|
|
|
|
email = open_last_email
|
|
visit_in_email("Confirm my account")
|
|
|
|
logout
|
|
visit root_path
|
|
click_link "Sign in"
|
|
fill_in "user_login", with: "new_user_email@example.com"
|
|
fill_in "user_password", with: "new_password"
|
|
click_button "Enter"
|
|
|
|
expect(page).to have_content "You have been signed in successfully."
|
|
|
|
visit account_path
|
|
click_link "Change my credentials"
|
|
expect(page).to have_selector("input[value='new_user_email@example.com']")
|
|
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_comment'
|
|
check 'account_email_on_comment_reply'
|
|
|
|
click_button 'Save changes'
|
|
|
|
expect(page).to have_content "Changes saved"
|
|
|
|
visit account_path
|
|
|
|
expect(page).to have_selector("input[value='Google']")
|
|
expect(find("#account_email_on_comment")).to be_checked
|
|
expect(find("#account_email_on_comment_reply")).to be_checked
|
|
end
|
|
|
|
context "Option to display badge for official position" do
|
|
|
|
scenario "Users with official position of level 1" do
|
|
official_user = create(:user, official_level: 1)
|
|
|
|
login_as(official_user)
|
|
visit account_path
|
|
|
|
check 'account_official_position_badge'
|
|
click_button 'Save changes'
|
|
expect(page).to have_content "Changes saved"
|
|
|
|
visit account_path
|
|
expect(find("#account_official_position_badge")).to be_checked
|
|
end
|
|
|
|
scenario "Users with official position of level 2 and above" do
|
|
official_user2 = create(:user, official_level: 2)
|
|
official_user3 = create(:user, official_level: 3)
|
|
|
|
login_as(official_user2)
|
|
visit account_path
|
|
|
|
expect(page).not_to have_css '#account_official_position_badge'
|
|
|
|
login_as(official_user3)
|
|
visit account_path
|
|
|
|
expect(page).not_to have_css '#account_official_position_badge'
|
|
end
|
|
|
|
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 root_path
|
|
|
|
click_link 'My account'
|
|
|
|
expect(page).to have_current_path(account_path, ignore_query: true)
|
|
|
|
expect(page).to have_link('Change my credentials')
|
|
click_link 'Change my credentials'
|
|
click_button 'Update'
|
|
|
|
expect(page).to have_content error_message
|
|
end
|
|
|
|
scenario 'Erasing account' do
|
|
visit account_path
|
|
|
|
click_link 'Erase my account'
|
|
|
|
fill_in 'user_erase_reason', with: 'a test'
|
|
|
|
click_button 'Erase my account'
|
|
|
|
expect(page).to have_content "Goodbye! Your account has been cancelled. We hope to see you again soon."
|
|
|
|
login_through_form_as(@user)
|
|
|
|
expect(page).to have_content "Invalid login or password"
|
|
end
|
|
|
|
context 'Recommendations' do
|
|
|
|
background do
|
|
Setting['feature.user.recommendations'] = true
|
|
Setting['feature.user.recommendations_on_debates'] = true
|
|
Setting['feature.user.recommendations_on_proposals'] = true
|
|
end
|
|
|
|
after do
|
|
Setting['feature.user.recommendations'] = nil
|
|
Setting['feature.user.recommendations_on_debates'] = nil
|
|
Setting['feature.user.recommendations_on_proposals'] = nil
|
|
end
|
|
|
|
scenario 'are enabled by default' do
|
|
visit account_path
|
|
|
|
expect(page).to have_content('Recommendations')
|
|
expect(page).to have_content('Show debates recommendations')
|
|
expect(page).to have_content('Show proposals recommendations')
|
|
expect(find("#account_recommended_debates")).to be_checked
|
|
expect(find("#account_recommended_proposals")).to be_checked
|
|
end
|
|
|
|
scenario "can be disabled through 'My account' page" do
|
|
visit account_path
|
|
|
|
expect(page).to have_content('Recommendations')
|
|
expect(page).to have_content('Show debates recommendations')
|
|
expect(page).to have_content('Show proposals recommendations')
|
|
expect(find("#account_recommended_debates")).to be_checked
|
|
expect(find("#account_recommended_proposals")).to be_checked
|
|
|
|
uncheck 'account_recommended_debates'
|
|
uncheck 'account_recommended_proposals'
|
|
|
|
click_button 'Save changes'
|
|
|
|
expect(find("#account_recommended_debates")).not_to be_checked
|
|
expect(find("#account_recommended_proposals")).not_to be_checked
|
|
|
|
@user.reload
|
|
|
|
expect(@user.recommended_debates).to be(false)
|
|
expect(@user.recommended_proposals).to be(false)
|
|
end
|
|
|
|
end
|
|
end
|