Fix an `ActionView::Template::Error: undefined method 'verification_key' for nil` error in the welcome_user mailer when a user signs up without an email address. Caused by the fact that we now render mail templates regardless of whether the user has an email address, and then skip sending the email only after the mail template is rendered.
73 lines
2.3 KiB
Ruby
73 lines
2.3 KiB
Ruby
require "test_helper"
|
|
|
|
class UserMailerTest < ActionMailer::TestCase
|
|
context "UserMailer" do
|
|
setup do
|
|
@user = create(:user, email_address: build(:email_address))
|
|
end
|
|
|
|
context "dmail_notice method" do
|
|
should "work" do
|
|
@dmail = create(:dmail, owner: @user, to: @user)
|
|
mail = UserMailer.dmail_notice(@dmail)
|
|
assert_not_nil(mail.header["List-Unsubscribe"])
|
|
assert_emails(1) { mail.deliver_now }
|
|
end
|
|
|
|
should "not send an email for a user without an email address" do
|
|
@user = create(:user)
|
|
@dmail = create(:dmail, owner: @user, to: @user)
|
|
mail = UserMailer.dmail_notice(@dmail)
|
|
assert_emails(0) { mail.deliver_now }
|
|
end
|
|
|
|
should "not send an email for a user with an undeliverable address" do
|
|
@user = create(:user, email_address: build(:email_address, is_deliverable: false))
|
|
@dmail = create(:dmail, owner: @user, to: @user)
|
|
mail = UserMailer.dmail_notice(@dmail)
|
|
assert_emails(0) { mail.deliver_now }
|
|
end
|
|
|
|
should "not send an email for a user with an unverified address" do
|
|
@user = create(:user, email_address: build(:email_address, is_verified: false))
|
|
@dmail = create(:dmail, owner: @user, to: @user)
|
|
mail = UserMailer.dmail_notice(@dmail)
|
|
assert_emails(0) { mail.deliver_now }
|
|
end
|
|
end
|
|
|
|
context "password_reset method" do
|
|
should "work" do
|
|
mail = UserMailer.password_reset(@user)
|
|
assert_emails(1) { mail.deliver_now }
|
|
end
|
|
end
|
|
|
|
context "email_change_confirmation method" do
|
|
should "work" do
|
|
mail = UserMailer.email_change_confirmation(@user)
|
|
assert_emails(1) { mail.deliver_now }
|
|
end
|
|
|
|
should "not fail for a user without an email address" do
|
|
@user = create(:user)
|
|
mail = UserMailer.email_change_confirmation(@user)
|
|
assert_emails(0) { mail.deliver_now }
|
|
end
|
|
end
|
|
|
|
context "welcome_user method" do
|
|
should "work" do
|
|
mail = UserMailer.welcome_user(@user)
|
|
assert_emails(1) { mail.deliver_now }
|
|
end
|
|
|
|
should "not fail for a user without an email address" do
|
|
@user = create(:user)
|
|
mail = UserMailer.welcome_user(@user)
|
|
assert_emails(0) { mail.deliver_now }
|
|
end
|
|
end
|
|
end
|
|
end
|