From 33793df627f3b3b64a5dfa05b083f0bf1ffcc700 Mon Sep 17 00:00:00 2001 From: Andy Zhao <17884966+Zhao-Andy@users.noreply.github.com> Date: Thu, 25 Feb 2021 10:45:40 -0500 Subject: [PATCH] Don't sub mailchimp if mailchimp is not enabled (#12791) * Dont sub mailchimp if mailchimp is not enabled * Refactor guard clauses a bit * Add test * Remove unneccessary test * Add removed key check --- app/models/user.rb | 6 +++--- spec/models/user_spec.rb | 13 +++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index a3a0ae5dd..bbe3aafe7 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -466,9 +466,9 @@ class User < ApplicationRecord end def subscribe_to_mailchimp_newsletter - return unless registered - return unless email.present? && email.include?("@") - return if saved_changes["unconfirmed_email"] && saved_changes["confirmation_sent_at"] + return unless registered && email.present? + return if SiteConfig.mailchimp_api_key.blank? && SiteConfig.mailchimp_newsletter_id.blank? + return if saved_changes.key?(:unconfirmed_email) && saved_changes.key?(:confirmation_sent_at) return unless saved_changes.key?(:email) || saved_changes.key?(:email_newsletter) Users::SubscribeToMailchimpNewsletterWorker.perform_async(id) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 87ab5de34..c6b0980cf 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -487,12 +487,6 @@ RSpec.describe User, type: :model do end end - it "does not enqueue with an invalid email" do - sidekiq_assert_no_enqueued_jobs(only: Users::SubscribeToMailchimpNewsletterWorker) do - user.update(email: "foobar") - end - end - it "does not enqueue with an unconfirmed email" do sidekiq_assert_no_enqueued_jobs(only: Users::SubscribeToMailchimpNewsletterWorker) do user.update(unconfirmed_email: "bob@bob.com", confirmation_sent_at: Time.current) @@ -505,6 +499,13 @@ RSpec.describe User, type: :model do end end + it "does not enqueue if Mailchimp is not enabled" do + allow(SiteConfig).to receive(:mailchimp_api_key).and_return(nil) + sidekiq_assert_no_enqueued_jobs(only: Users::SubscribeToMailchimpNewsletterWorker) do + user.update(email: "something@real.com") + end + end + it "does not enqueue when the email address or subscription status has not changed" do # The trait replaces the method with a dummy, but we need the actual method for this test. user = described_class.find(create(:user, :ignore_mailchimp_subscribe_callback).id)