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:
Javi Martín
2019-04-29 12:26:17 +02:00
parent 12774c7484
commit 9427f01442
190 changed files with 14 additions and 54 deletions

210
spec/system/account_spec.rb Normal file
View 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