Skip to content

Commit 5b641f3

Browse files
authored
Merge pull request #1750 from gnclmorais/dont-email-unaccepted-toc
Stop emailing students & coaches without TOC accepted
2 parents c6e0a61 + 2eddf9d commit 5b641f3

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

app/models/member.rb

+4-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class Member < ApplicationRecord
2020
validates :email, uniqueness: true
2121
validates :about_you, length: { maximum: 255 }
2222

23+
scope :accepted_toc, -> { where.not(accepted_toc_at: nil) }
2324
scope :order_by_email, -> { order(:email) }
2425
scope :subscribers, -> { joins(:subscriptions).order('created_at desc').uniq }
2526
scope :not_banned, lambda {
@@ -32,7 +33,9 @@ class Member < ApplicationRecord
3233
.where('meeting_invitations.meeting_id = ? and meeting_invitations.attending = ?',
3334
meeting.id, true)
3435
}
35-
scope :in_group, ->(members) { not_banned.joins(:groups).where(groups: { id: members.select(:id) }) }
36+
scope :in_group, lambda { |members|
37+
not_banned.accepted_toc.joins(:groups).where(groups: { id: members.select(:id) })
38+
}
3639

3740
scope :with_skill, ->(skill_name) { tagged_with(skill_name) }
3841

spec/models/invitation_manager_spec.rb

+46
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,52 @@
6666

6767
manager.send_event_emails(event, chapter)
6868
end
69+
70+
it 'emails only students that accepted toc' do
71+
event = Fabricate(:event, chapters: [chapter], audience: 'Students')
72+
73+
first_student, *other_students = students
74+
first_student.update(accepted_toc_at: nil)
75+
76+
expect(Invitation).to_not(
77+
receive(:new).
78+
with(event: event, member: first_student, role: 'Student').
79+
and_call_original
80+
)
81+
82+
other_students.each do |other_student|
83+
expect(Invitation).to(
84+
receive(:new).
85+
with(event: event, member: other_student, role: 'Student').
86+
and_call_original
87+
)
88+
end
89+
90+
manager.send_event_emails(event, chapter)
91+
end
92+
93+
it 'emails only coaches that accepted toc' do
94+
event = Fabricate(:event, chapters: [chapter], audience: 'Coaches')
95+
96+
first_coach, *other_coaches = coaches
97+
first_coach.update(accepted_toc_at: nil)
98+
99+
expect(Invitation).to_not(
100+
receive(:new).
101+
with(event: event, member: first_coach, role: 'Coach').
102+
and_call_original
103+
)
104+
105+
other_coaches.each do |other_coach|
106+
expect(Invitation).to(
107+
receive(:new).
108+
with(event: event, member: other_coach, role: 'Coach').
109+
and_call_original
110+
)
111+
end
112+
113+
manager.send_event_emails(event, chapter)
114+
end
69115
end
70116

71117
describe '#send_monthly_attendance_reminder_emails', wip: true do

0 commit comments

Comments
 (0)