diff --git a/app/lib/user_segments.rb b/app/lib/user_segments.rb index 79af67ed1..bc28a1478 100644 --- a/app/lib/user_segments.rb +++ b/app/lib/user_segments.rb @@ -66,6 +66,8 @@ class UserSegments all_users.where(geozone: geozones[segment.to_s]) elsif valid_segment?(segment) send(segment) + else + User.none end end diff --git a/app/models/admin_notification.rb b/app/models/admin_notification.rb index abf5bd12c..091a0ca6f 100644 --- a/app/models/admin_notification.rb +++ b/app/models/admin_notification.rb @@ -25,7 +25,7 @@ class AdminNotification < ApplicationRecord end def list_of_recipients_count - list_of_recipients&.count || 0 + list_of_recipients.count end def deliver diff --git a/app/models/newsletter.rb b/app/models/newsletter.rb index d4095be1e..831ebf83e 100644 --- a/app/models/newsletter.rb +++ b/app/models/newsletter.rb @@ -11,7 +11,7 @@ class Newsletter < ApplicationRecord include ActsAsParanoidAliases def list_of_recipient_emails - UserSegments.user_segment_emails(segment_recipient) if valid_segment_recipient? + UserSegments.user_segment_emails(segment_recipient) end def valid_segment_recipient? diff --git a/spec/controllers/admin/emails_download_controller_spec.rb b/spec/controllers/admin/emails_download_controller_spec.rb index 65f9a4cd3..fceaf807c 100644 --- a/spec/controllers/admin/emails_download_controller_spec.rb +++ b/spec/controllers/admin/emails_download_controller_spec.rb @@ -15,5 +15,12 @@ describe Admin::EmailsDownloadController do expect(response).to be_successful expect(response.body).to eq "admin@consul.dev,user@consul.dev" end + + it "sends an empty file with an invalid users_segment" do + get :generate_csv, params: { users_segment: "invalid_segment" } + + expect(response).to be_successful + expect(response.body).to be_empty + end end end diff --git a/spec/lib/user_segments_spec.rb b/spec/lib/user_segments_spec.rb index 90ec6d621..533580bc5 100644 --- a/spec/lib/user_segments_spec.rb +++ b/spec/lib/user_segments_spec.rb @@ -307,7 +307,7 @@ describe UserSegments do recipients = UserSegments.recipients(:invalid_segment) - expect(recipients).to be nil + expect(recipients).to eq [] end it "does not return any recipients when given a method name as a segment" do @@ -315,7 +315,7 @@ describe UserSegments do recipients = UserSegments.recipients(:ancestors) - expect(recipients).to be nil + expect(recipients).to eq [] end end @@ -327,6 +327,14 @@ describe UserSegments do emails = UserSegments.user_segment_emails(:all_users) expect(emails).to eq ["first@email.com", "last@email.com"] end + + it "returns an empty list when given an invalid segment" do + create(:user, email: "first@email.com") + + emails = UserSegments.user_segment_emails(:invalid_segment) + + expect(emails).to eq [] + end end context "Geozones" do