Skip to content

Commit

Permalink
Always send the newsletter the group admin account
Browse files Browse the repository at this point in the history
  • Loading branch information
voodoorai2000 committed Nov 16, 2018
1 parent 4464570 commit 4cf76b0
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 10 deletions.
14 changes: 11 additions & 3 deletions app/models/newsletter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ class Newsletter < ActiveRecord::Base
def list_of_recipient_emails
Organization.where(organization_interests: { interest: interest })
.joins(:organization_interests)
.pluck(:email)
.pluck(:email) << admin_email
end

def admin_email
"registrodelobbies@madrid.es"
end

def draft?
Expand All @@ -35,7 +39,11 @@ def valid_email?(email)
end

def log_delivery(recipient_email, action=:email)
organization = Organization.where(email: recipient_email).first
Log.activity(organization, action, self)
if recipient_email == admin_email
Log.activity(nil, "admin_email", self)
else
organization = Organization.where(email: recipient_email).first
Log.activity(organization, action, self)
end
end
end
28 changes: 21 additions & 7 deletions spec/models/newsletter_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@

describe '#list_of_recipient_emails' do

it 'always includes the group admin email' do
recipients = newsletter.list_of_recipient_emails
expect(recipients).to eq([newsletter.admin_email])
end

it 'returns list of recipients that have a certain interest' do
culture = create(:interest, name: 'Culture')
health = create(:interest, name: 'Health')
Expand All @@ -34,15 +39,17 @@

recipients = newsletter.list_of_recipient_emails

expect(recipients.count).to eq(2)
expect(recipients.count).to eq(3)
expect(recipients).to include(organization1.email)
expect(recipients).to include(organization2.email)
expect(recipients).to include(newsletter.admin_email)

newsletter.update(interest: health)

recipients = newsletter.list_of_recipient_emails
expect(recipients.count).to eq(1)
expect(recipients).to eq([organization1.email])
expect(recipients.count).to eq(2)
expect(recipients).to include(organization1.email)
expect(recipients).to include(newsletter.admin_email)
end

end
Expand All @@ -64,8 +71,9 @@

expect(emails_sent_to(organization1.email).count).to eq 1
expect(emails_sent_to(organization2.email).count).to eq 1
expect(emails_sent_to(organization3.email).count).to eq 0
expect(ActionMailer::Base.deliveries.count).to eq(2)
expect(emails_sent_to(organization2.email).count).to eq 1
expect(emails_sent_to(newsletter.admin_email).count).to eq 1
expect(ActionMailer::Base.deliveries.count).to eq(3)
end

it "skips invalid emails" do
Expand All @@ -89,7 +97,8 @@

expect(emails_sent_to(valid_email).count).to eq 1
expect(emails_sent_to(invalid_email).count).to eq 0
expect(ActionMailer::Base.deliveries.count).to eq(1)
expect(emails_sent_to(newsletter.admin_email).count).to eq 1
expect(ActionMailer::Base.deliveries.count).to eq(2)
end

it "stores a log of the users that have received the newsletter" do
Expand All @@ -106,7 +115,7 @@
newsletter = create(:newsletter, interest: interest)
newsletter.deliver

expect(Log.count).to eq 2
expect(Log.count).to eq 3

organizations = Log.pluck(:organization_id)
expect(organizations).to include(organization1.id)
Expand All @@ -116,6 +125,11 @@
expect(log.organization_id).to eq(organization1.id)
expect(log.action).to eq("email")
expect(log.actionable).to eq(newsletter)

log = Log.last
expect(log.organization_id).to eq(nil)
expect(log.action).to eq("admin_email")
expect(log.actionable).to eq(newsletter)
end

it "continues sending the newsletter if there is an exception in a delivery" do
Expand Down

0 comments on commit 4cf76b0

Please sign in to comment.