diff --git a/app/workers/users/subscribe_to_mailchimp_newsletter_worker.rb b/app/workers/users/subscribe_to_mailchimp_newsletter_worker.rb index b2b27266b..27f20daff 100644 --- a/app/workers/users/subscribe_to_mailchimp_newsletter_worker.rb +++ b/app/workers/users/subscribe_to_mailchimp_newsletter_worker.rb @@ -6,7 +6,7 @@ module Users def perform(user_id) user = User.find_by(id: user_id) - Mailchimp::Bot.new(user).upsert if user + Mailchimp::Bot.new(user).upsert if user&.email end end end diff --git a/spec/workers/users/subscribe_to_mailchimp_newsletter_worker_spec.rb b/spec/workers/users/subscribe_to_mailchimp_newsletter_worker_spec.rb index 6a1123807..ab0810b1b 100644 --- a/spec/workers/users/subscribe_to_mailchimp_newsletter_worker_spec.rb +++ b/spec/workers/users/subscribe_to_mailchimp_newsletter_worker_spec.rb @@ -16,5 +16,16 @@ RSpec.describe Users::SubscribeToMailchimpNewsletterWorker, type: :worker do expect(mailchimp_bot).to have_received(:upsert) end + + it "does not subscribe the user if they don't have an email" do + mailchimp_bot = double + allow(Mailchimp::Bot).to receive(:new).and_return(mailchimp_bot) + allow(mailchimp_bot).to receive(:upsert) + user.update! email: nil + + worker.perform(user.id) + + expect(mailchimp_bot).not_to have_received(:upsert) + end end end