249 lines
7.3 KiB
Ruby
249 lines
7.3 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 login details"
|
|
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 login details"
|
|
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
|
|
|
|
describe "Email digest checkbox" do
|
|
scenario "Appears when the proposals process is enabled" do
|
|
visit account_path
|
|
|
|
expect(page).to have_field "Receive a summary of proposal notifications", checked: true
|
|
end
|
|
|
|
scenario "Does not appear when the proposals process is disabled" do
|
|
Setting["process.proposals"] = false
|
|
|
|
visit account_path
|
|
|
|
expect(page).not_to have_field "Receive a summary of proposal notifications"
|
|
end
|
|
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)
|
|
|
|
click_link "Change my login details"
|
|
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
|
|
|
|
scenario "Erasing an account removes all related roles" do
|
|
user.update!(username: "Admin")
|
|
administrators = [create(:administrator, user: user),
|
|
create(:administrator, user: create(:user, username: "Other admin"))]
|
|
budget = create(:budget, administrators: administrators)
|
|
visit admin_budget_budget_investments_path(budget)
|
|
|
|
expect(page).to have_select options: ["All administrators", "Admin", "Other admin"]
|
|
|
|
visit account_path
|
|
click_link "Erase my account"
|
|
fill_in "user_erase_reason", with: "I don't want my roles anymore!"
|
|
click_button "Erase my account"
|
|
|
|
expect(page).to have_content "Goodbye! Your account has been cancelled. We hope to see you again soon."
|
|
|
|
login_as(administrators.last.user)
|
|
visit admin_budget_budget_investments_path(budget)
|
|
|
|
expect(page).to have_select options: ["All administrators", "Other admin"]
|
|
end
|
|
|
|
context "Recommendations" do
|
|
scenario "are enabled by default" do
|
|
visit account_path
|
|
|
|
expect(page).to have_content "Recommendations"
|
|
expect(page).to have_field "Recommend debates to me", checked: true
|
|
expect(page).to have_field "Recommend proposals to me", checked: true
|
|
end
|
|
|
|
scenario "can be disabled through 'My account' page" do
|
|
visit account_path
|
|
|
|
expect(page).to have_content "Recommendations"
|
|
expect(page).to have_field "Recommend debates to me", checked: true
|
|
expect(page).to have_field "Recommend proposals to me", checked: true
|
|
|
|
uncheck "Recommend debates to me"
|
|
uncheck "Recommend proposals to me"
|
|
|
|
click_button "Save changes"
|
|
|
|
expect(page).to have_content "Changes saved"
|
|
|
|
expect(page).to have_field "Recommend debates to me", checked: false
|
|
expect(page).to have_field "Recommend proposals to me", checked: false
|
|
|
|
visit debates_path
|
|
|
|
expect(page).not_to have_link("recommendations")
|
|
|
|
visit proposals_path
|
|
|
|
expect(page).not_to have_link("recommendations")
|
|
end
|
|
end
|
|
end
|