We check the changes have been saved and we check recommendations have been disabled after visiting the debates and proposals pages. The latter helps us avoid accessing the database after the process running the browser has been started.
216 lines
6.2 KiB
Ruby
216 lines
6.2 KiB
Ruby
require "rails_helper"
|
|
|
|
describe "Account" do
|
|
let(:user) { create(:user, username: "Manuela Colau") }
|
|
|
|
before do
|
|
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
|
|
|
|
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 Email or username or password"
|
|
end
|
|
|
|
context "Recommendations" do
|
|
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(page).to have_content "Changes saved"
|
|
|
|
expect(find("#account_recommended_debates")).not_to be_checked
|
|
expect(find("#account_recommended_proposals")).not_to be_checked
|
|
|
|
visit debates_path
|
|
|
|
expect(page).not_to have_link("recommendations")
|
|
|
|
visit proposals_path
|
|
|
|
expect(page).not_to have_link("recommendations")
|
|
end
|
|
end
|
|
end
|