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
This commit is contained in:
Andy Zhao 2021-02-25 10:45:40 -05:00 committed by GitHub
parent 260a019e92
commit 33793df627
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 9 deletions

View file

@ -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)

View file

@ -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)