Skip to content

Commit 3e09371

Browse files
committed
Email admin users for new subscribers
1 parent 878570e commit 3e09371

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

app/controllers/users/newsletter_subscriptions_controller.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ def create
3838
return render Users::NewsletterSubscriptions::NewView.new(newsletter_subscription: @newsletter_subscription), status: :unprocessable_entity
3939
end
4040

41-
if @user.needs_confirmation?
41+
if @user.previously_new_record?
42+
NewUserNotificationJob.perform_later(@user)
43+
elsif @user.needs_confirmation?
4244
EmailConfirmationNotifier.deliver_to(@user)
43-
else
44-
# TODO: Send already subscribed email
4545
end
4646

4747
redirect_to users_newsletter_subscription_path(@newsletter_subscription)

spec/requests/users/newsletter_subscriptions_spec.rb

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,20 @@
8080
expect(mail.subject).to eq "Confirm your email address"
8181
end
8282

83+
it "notifies admin for new user" do
84+
email = FactoryBot.generate(:email)
85+
admin = FactoryBot.create(:admin_user)
86+
87+
post users_newsletter_subscriptions_path,
88+
params: {user: {email: email, password: "password", password_confirmation: "password"}}
89+
90+
perform_enqueued_jobs_and_subsequently_enqueued_jobs
91+
92+
mail = find_mail_to(admin.email)
93+
94+
expect(mail.subject).to eq "New Joy of Rails User"
95+
end
96+
8397
it "disallows for a subscribing with an already subscribed email" do
8498
user = FactoryBot.create(:user, :subscribed)
8599

@@ -94,7 +108,7 @@
94108
# assert "already subscribed" email sent
95109
end
96110

97-
it "succeeds for a user with existing accout who is not currently subscribed email" do
111+
it "succeeds for a user with existing account who is not currently subscribed email" do
98112
user = FactoryBot.create(:user, :unsubscribed)
99113

100114
expect {
@@ -107,6 +121,28 @@
107121
expect(user.reload.newsletter_subscription).to be_present
108122
end
109123

124+
it "sends confirmation for an unconfirmed user with existing account who is not currently subscribed email" do
125+
user = FactoryBot.create(:user, :unsubscribed, :unconfirmed)
126+
admin = FactoryBot.create(:admin_user)
127+
128+
expect {
129+
post users_newsletter_subscriptions_path,
130+
params: {user: {email: user.email}}
131+
}.to change(NewsletterSubscription, :count).by(1)
132+
133+
expect(response).to redirect_to(users_newsletter_subscription_path(User.last.newsletter_subscription))
134+
135+
expect(user.reload.newsletter_subscription).to be_present
136+
137+
perform_enqueued_jobs_and_subsequently_enqueued_jobs
138+
139+
mail = find_mail_to(user.email)
140+
141+
expect(mail.subject).to eq "Confirm your email address"
142+
143+
expect(find_mail_to(admin.email)).to be_nil
144+
end
145+
110146
it "disallows a user to subscribe with an invalid email" do
111147
expect {
112148
post users_newsletter_subscriptions_path,

0 commit comments

Comments
 (0)