|
17 | 17 | let!(:eligible_student) do |
18 | 18 | member = Fabricate(:member) |
19 | 19 | Fabricate(:subscription, member: member, group: students_group) |
| 20 | + Fabricate( |
| 21 | + :workshop_invitation, |
| 22 | + member: member, |
| 23 | + workshop: Fabricate(:workshop, chapter: chapter, date_and_time: 6.months.ago), |
| 24 | + role: "Student", |
| 25 | + attended: true |
| 26 | + ) |
20 | 27 | member |
21 | 28 | end |
22 | 29 |
|
|
71 | 78 | member |
72 | 79 | end |
73 | 80 |
|
| 81 | + let!(:student_with_very_old_attendance) do |
| 82 | + member = Fabricate(:member) |
| 83 | + Fabricate(:subscription, member: member, group: students_group) |
| 84 | + Fabricate( |
| 85 | + :workshop_invitation, |
| 86 | + member: member, |
| 87 | + workshop: Fabricate(:workshop, chapter: chapter, date_and_time: 14.months.ago), |
| 88 | + role: "Student", |
| 89 | + attended: true |
| 90 | + ) |
| 91 | + member |
| 92 | + end |
| 93 | + |
74 | 94 | it "emails only students who have not attended in the last 3 months and were not emailed before" do |
75 | 95 | expect { perform_enqueued_jobs { call } }.to change(MemberEmailDelivery, :count).by(2) |
76 | 96 |
|
|
102 | 122 | expect(MemberEmailDelivery.where(member: student_without_toc)).to be_empty |
103 | 123 | end |
104 | 124 |
|
| 125 | + it "does not email students who have not attended in the past year" do |
| 126 | + perform_enqueued_jobs { call } |
| 127 | + |
| 128 | + expect(MemberEmailDelivery.where(member: student_with_very_old_attendance)).to be_empty |
| 129 | + end |
| 130 | + |
105 | 131 | it "sends only one chaser for a member with multiple student subscriptions" do |
106 | 132 | member = Fabricate(:member) |
107 | 133 | other_chapter = Fabricate(:chapter) |
108 | 134 | other_students_group = Fabricate(:group, name: "Students", chapter: other_chapter) |
109 | 135 | Fabricate(:subscription, member: member, group: students_group) |
110 | 136 | Fabricate(:subscription, member: member, group: other_students_group) |
| 137 | + Fabricate( |
| 138 | + :workshop_invitation, |
| 139 | + member: member, |
| 140 | + workshop: Fabricate(:workshop, chapter: chapter, date_and_time: 6.months.ago), |
| 141 | + role: "Student", |
| 142 | + attended: true |
| 143 | + ) |
111 | 144 |
|
112 | 145 | perform_enqueued_jobs { call } |
113 | 146 |
|
|
159 | 192 | it "emails a student member who has recent attendance only as a coach" do |
160 | 193 | member = Fabricate(:member) |
161 | 194 | Fabricate(:subscription, member: member, group: students_group) |
| 195 | + Fabricate( |
| 196 | + :workshop_invitation, |
| 197 | + member: member, |
| 198 | + workshop: Fabricate(:workshop, chapter: chapter, date_and_time: 6.months.ago), |
| 199 | + role: "Student", |
| 200 | + attended: true |
| 201 | + ) |
162 | 202 | Fabricate( |
163 | 203 | :workshop_invitation, |
164 | 204 | member: member, |
|
0 commit comments