Use system specs instead of feature specs
We get rid of database cleaner, and JavaScript tests are faster because between tests we now rollback transactions instead of truncating the database.
This commit is contained in:
210
spec/system/account_spec.rb
Normal file
210
spec/system/account_spec.rb
Normal file
@@ -0,0 +1,210 @@
|
||||
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
|
||||
Reference in New Issue
Block a user