Files
nairobi/spec/features/account_spec.rb
Javi Martín db97f9d08c Add and apply rubocop rules for empty lines
We were very inconsistent regarding these rules.

Personally I prefer no empty lines around blocks, clases, etc... as
recommended by the Ruby style guide [1], and they're the default values
in rubocop, so those are the settings I'm applying.

The exception is the `private` access modifier, since we were leaving
empty lines around it most of the time. That's the default rubocop rule
as well. Personally I don't have a strong preference about this one.


[1] https://rubystyle.guide/#empty-lines-around-bodies
2019-10-24 17:11:47 +02:00

211 lines
6.1 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(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