mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-26 20:56:48 +00:00
Using deferred methods on the user model breaks delayed jobs when the user is deleted while the job still exists. We could create a proper job referencing a user id for sending these emails instead. But since the user has to wait for the confirmation email anyway, we can send it within the current request. This should be revised if performance becomes an issue. Sending the email directly also has the advantage that we can tell the user if emailing failed. See the following commits. This change impacts a bunch of specs as we now need a working email setup to create unconfirmed users. This commit introduces a custom matcher to unify testing for confirmation emails.
46 lines
1.3 KiB
Ruby
46 lines
1.3 KiB
Ruby
require "spec_helper"
|
|
|
|
feature "Managing users" do
|
|
include AuthenticationWorkflow
|
|
|
|
context "as super-admin" do
|
|
before do
|
|
create(:mail_method)
|
|
quick_login_as_admin
|
|
end
|
|
|
|
describe "creating a user" do
|
|
it "shows no confirmation message to start with" do
|
|
visit spree.new_admin_user_path
|
|
expect(page).to have_no_text "Email confirmation is pending"
|
|
end
|
|
|
|
it "confirms successful creation" do
|
|
visit spree.new_admin_user_path
|
|
fill_in "Email", with: "user1@example.org"
|
|
fill_in "Password", with: "user1Secret"
|
|
fill_in "Confirm Password", with: "user1Secret"
|
|
expect do
|
|
click_button "Create"
|
|
end.to change { Spree::User.count }.by 1
|
|
expect(page).to have_text "Created Successfully"
|
|
expect(page).to have_text "Email confirmation is pending"
|
|
end
|
|
end
|
|
|
|
describe "resending confirmation email", js: true do
|
|
let(:user) { create :user, confirmed_at: nil }
|
|
|
|
it "displays success" do
|
|
visit spree.edit_admin_user_path user
|
|
|
|
expect do
|
|
# The `a` element doesn't have an href, so we can't use click_link.
|
|
find("a", text: "Resend").click
|
|
expect(page).to have_text "Resend done"
|
|
end.to send_confirmation_instructions
|
|
end
|
|
end
|
|
end
|
|
end
|