mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
54 lines
1.6 KiB
Ruby
54 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
||
|
||
require 'system_helper'
|
||
|
||
RSpec.describe "Account Settings" do
|
||
include AuthenticationHelper
|
||
|
||
describe "as a logged in user" do
|
||
let(:user) do
|
||
create(:user,
|
||
email: 'old@email.com',
|
||
password: 'OriginalPassword',
|
||
password_confirmation: 'OriginalPassword')
|
||
end
|
||
|
||
before do
|
||
login_as user
|
||
visit "/account"
|
||
find("a", text: /Account Settings/i).click
|
||
expect(page).to have_content 'Account Settings'
|
||
end
|
||
|
||
it "allows the user to update their email address" do
|
||
fill_in 'user_email', with: 'new@email.com'
|
||
|
||
expect do
|
||
click_button 'Update'
|
||
end.to enqueue_job ActionMailer::MailDeliveryJob
|
||
|
||
expect(enqueued_jobs.last.to_s).to match "new@email.com"
|
||
|
||
expect(find(".alert-box.success").text.strip).to eq "Account updated!\n×"
|
||
user.reload
|
||
expect(user.email).to eq 'old@email.com'
|
||
expect(user.unconfirmed_email).to eq 'new@email.com'
|
||
find("a", text: /Account Settings/i).click
|
||
expect(page).to have_content "Pending email confirmation for: %s. \
|
||
Your email address will be updated once the new email is confirmed." % 'new@email.com'
|
||
end
|
||
|
||
it "allows the user to change their password" do
|
||
initial_password = user.encrypted_password
|
||
|
||
fill_in 'user_password', with: 'NewPassword'
|
||
fill_in 'user_password_confirmation', with: 'NewPassword'
|
||
|
||
click_button 'Update'
|
||
expect(find(".alert-box.success").text.strip).to eq "Account updated!\n×"
|
||
|
||
expect(user.reload.encrypted_password).not_to eq initial_password
|
||
end
|
||
end
|
||
end
|