diff --git a/spec/features/settings/account_spec.rb b/spec/features/settings/account_spec.rb index b90777f..51f1c83 100644 --- a/spec/features/settings/account_spec.rb +++ b/spec/features/settings/account_spec.rb @@ -2,54 +2,57 @@ require 'rails_helper' RSpec.describe 'Account settings', type: :feature do let(:user) { create :user } - let(:geraint) { create :user, id: 2, cn: 'geraint', email: "lamagliarosa@example.com" } - before do - login_as user, :scope => :user - geraint.save! + feature "Update email address" do + let(:geraint) { create :user, id: 2, cn: 'geraint', email: "lamagliarosa@example.com" } - allow_any_instance_of(User).to receive(:valid_ldap_authentication?) - .with("invalid password").and_return(false) - allow_any_instance_of(User).to receive(:valid_ldap_authentication?) - .with("valid password").and_return(true) - end + before do + login_as user, :scope => :user + geraint.save! - scenario 'Update email address fails with invalid password' do - visit setting_path(:account) - fill_in 'Address', with: "lamagliarosa@example.com" - fill_in 'Current password', with: "invalid password" - click_button "Update" - - expect(current_url).to eq(setting_url(:account)) - expect(user.reload.unconfirmed_email).to be_nil - within ".flash-msg" do - expect(page).to have_content("did not match your current password") + allow_any_instance_of(User).to receive(:valid_ldap_authentication?) + .with("invalid password").and_return(false) + allow_any_instance_of(User).to receive(:valid_ldap_authentication?) + .with("valid password").and_return(true) end - end - scenario 'Update email address fails when new address already taken' do - visit setting_path(:account) - fill_in 'Address', with: "lamagliarosa@example.com" - fill_in 'Current password', with: "valid password" - click_button "Update" + scenario 'fails with invalid password' do + visit setting_path(:account) + fill_in 'Address', with: "lamagliarosa@example.com" + fill_in 'Current password', with: "invalid password" + click_button "Update" - expect(current_url).to eq(setting_url(:update_email)) - expect(user.reload.unconfirmed_email).to be_nil - within ".error-msg" do - expect(page).to have_content("has already been taken") + expect(current_url).to eq(setting_url(:account)) + expect(user.reload.unconfirmed_email).to be_nil + within ".flash-msg" do + expect(page).to have_content("did not match your current password") + end end - end - scenario 'Update email address works' do - visit setting_path(:account) - fill_in 'Address', with: "lamagliabianca@example.com" - fill_in 'Current password', with: "valid password" - click_button "Update" + scenario 'fails when new address already taken' do + visit setting_path(:account) + fill_in 'Address', with: "lamagliarosa@example.com" + fill_in 'Current password', with: "valid password" + click_button "Update" - expect(current_url).to eq(setting_url(:account)) - expect(user.reload.unconfirmed_email).to eq("lamagliabianca@example.com") - within ".flash-msg" do - expect(page).to have_content("Please confirm your new address") + expect(current_url).to eq(setting_url(:update_email)) + expect(user.reload.unconfirmed_email).to be_nil + within ".error-msg" do + expect(page).to have_content("has already been taken") + end + end + + scenario 'works with valid password and address' do + visit setting_path(:account) + fill_in 'Address', with: "lamagliabianca@example.com" + fill_in 'Current password', with: "valid password" + click_button "Update" + + expect(current_url).to eq(setting_url(:account)) + expect(user.reload.unconfirmed_email).to eq("lamagliabianca@example.com") + within ".flash-msg" do + expect(page).to have_content("Please confirm your new address") + end end end end