diff --git a/app/controllers/admin/emails_download_controller.rb b/app/controllers/admin/emails_download_controller.rb index 326c32ff1..179240358 100644 --- a/app/controllers/admin/emails_download_controller.rb +++ b/app/controllers/admin/emails_download_controller.rb @@ -13,6 +13,6 @@ class Admin::EmailsDownloadController < Admin::BaseController private def users_segment_emails_csv(users_segment) - UserSegments.send(users_segment).pluck(:email).to_csv + UserSegments.send(users_segment).newsletter.pluck(:email).to_csv end end diff --git a/app/models/newsletter.rb b/app/models/newsletter.rb index 0b7bc4481..beaa59495 100644 --- a/app/models/newsletter.rb +++ b/app/models/newsletter.rb @@ -14,7 +14,7 @@ class Newsletter < ActiveRecord::Base validates_format_of :from, :with => /@/ def list_of_recipients - UserSegments.send(segment_recipient) + UserSegments.send(segment_recipient).newsletter end def draft? diff --git a/lib/user_segments.rb b/lib/user_segments.rb index 02fbe9b5f..8a50f6d31 100644 --- a/lib/user_segments.rb +++ b/lib/user_segments.rb @@ -7,7 +7,7 @@ class UserSegments winner_investment_authors) def self.all_users - User.newsletter.active + User.active end def self.proposal_authors diff --git a/spec/lib/user_segments_spec.rb b/spec/lib/user_segments_spec.rb index 77dff6a27..3914c11bf 100644 --- a/spec/lib/user_segments_spec.rb +++ b/spec/lib/user_segments_spec.rb @@ -6,15 +6,11 @@ describe UserSegments do let(:user3) { create(:user) } describe "#all_users" do - it "returns all active users with newsletter enabled" do - active_user1 = create(:user, newsletter: true) - active_user2 = create(:user, newsletter: true) - active_user3 = create(:user, newsletter: false) + it "returns all active users enabled" do + active_user = create(:user) erased_user = create(:user, erased_at: Time.current) - expect(described_class.all_users).to include active_user1 - expect(described_class.all_users).to include active_user2 - expect(described_class.all_users).not_to include active_user3 + expect(described_class.all_users).to include active_user expect(described_class.all_users).not_to include erased_user end end diff --git a/spec/models/newsletter_spec.rb b/spec/models/newsletter_spec.rb index 09d66055d..6ab83ffcd 100644 --- a/spec/models/newsletter_spec.rb +++ b/spec/models/newsletter_spec.rb @@ -17,6 +17,11 @@ describe Newsletter do expect(newsletter).not_to be_valid end + it 'is not valid with an inexistent user segment for segment_recipient' do + newsletter.segment_recipient = 'invalid_user_segment_name' + expect(newsletter).not_to be_valid + end + it 'is not valid without a from' do newsletter.from = nil expect(newsletter).not_to be_valid @@ -31,4 +36,17 @@ describe Newsletter do newsletter.from = "this_is_not_an_email" expect(newsletter).not_to be_valid end + + describe '#list_of_recipients' do + before do + create(:user, newsletter: true, username: 'newsletter_user') + create(:user, newsletter: false) + newsletter.update(segment_recipient: 'all_users') + end + + it 'returns list of recipients excluding users with disabled newsletter' do + expect(newsletter.list_of_recipients.count).to eq(1) + expect(newsletter.list_of_recipients.first.username).to eq('newsletter_user') + end + end end