Skip to content

Commit

Permalink
Include managers as well in case the child creates participation (#86)
Browse files Browse the repository at this point in the history
* Include managers as well in case the child creates participation

* Add spec

* Remove changes to participations controller

* Add spec to address list
  • Loading branch information
njaeggi authored Sep 26, 2024
1 parent ea38fff commit 540d8c7
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 14 deletions.
59 changes: 45 additions & 14 deletions spec/controllers/event/participations_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,21 +39,52 @@
let(:pending_dj_handlers) { Delayed::Job.all.pluck(:handler) }
let(:user) { people(:bottom_member) }

it "sends confirmation mail when manager registers managed" do
PeopleManager.create!(manager_id: people(:top_leader).id, managed_id: user.id)
course.update!(waiting_list: false, maximum_participants: 2, participant_count: 1, automatic_assignment: true)

expect do
post :create, params: {group_id: group.id, event_id: course.id, event_participation: {person_id: user.id}}
expect(assigns(:participation)).to be_valid
end.to change { Delayed::Job.count }

expect(pending_dj_handlers).to be_one { |h| h =~ /Event::ParticipationNotificationJob/ }
expect(pending_dj_handlers).to be_one { |h| h =~ /Event::ParticipationConfirmationJob/ }
context "confirmation mails" do
context "as manager" do
before do
PeopleManager.create!(manager_id: people(:top_leader).id, managed_id: user.id)
course.update!(waiting_list: false, maximum_participants: 2, participant_count: 1, automatic_assignment: true)
end

it "sends confirmation mail when registering child" do
expect do
post :create, params: {group_id: group.id, event_id: course.id, event_participation: {person_id: user.id}}
expect(assigns(:participation)).to be_valid
end.to change { Delayed::Job.count }

expect(pending_dj_handlers).to be_one { |h| h =~ /Event::ParticipationNotificationJob/ }
expect(pending_dj_handlers).to be_one { |h| h =~ /Event::ParticipationConfirmationJob/ }

expect(flash[:notice])
.to include "Teilnahme von <i>#{user}</i> in <i>Eventus</i> wurde erfolgreich erstellt. Bitte überprüfe die Kontaktdaten und passe diese gegebenenfalls an."
expect(flash[:warning]).to be_nil
end
end

expect(flash[:notice])
.to include "Teilnahme von <i>#{user}</i> in <i>Eventus</i> wurde erfolgreich erstellt. Bitte überprüfe die Kontaktdaten und passe diese gegebenenfalls an."
expect(flash[:warning]).to be_nil
context "as child" do
before do
sign_in(user)
Fabricate(:role, type: Group::TopGroup::Leader.sti_name, person: user, group: groups(:top_group))
PeopleManager.create!(manager_id: people(:top_leader).id, managed_id: user.id)
course.update!(waiting_list: false, maximum_participants: 2, participant_count: 1, automatic_assignment: true)
end

it "sends confirmation mail to manager when child does not have email" do
user.update!(email: nil)

expect do
post :create, params: {group_id: group.id, event_id: course.id, event_participation: {person_id: user.id}}
expect(assigns(:participation)).to be_valid
end.to change { Delayed::Job.count }

expect(pending_dj_handlers).to be_one { |h| h =~ /Event::ParticipationNotificationJob/ }
expect(pending_dj_handlers).to be_one { |h| h =~ /Event::ParticipationConfirmationJob/ }

expect(flash[:notice])
.to include "Teilnahme von <i>#{user}</i> in <i>Eventus</i> wurde erfolgreich erstellt. Bitte überprüfe die Kontaktdaten und passe diese gegebenenfalls an."
expect(flash[:warning]).to be_nil
end
end
end

it 'sets participation state to applied' do
Expand Down
8 changes: 8 additions & 0 deletions spec/domain/mail_relay/address_list_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,14 @@
new_manager.email
])
end

it 'contains only manager emails when managed has no email' do
managed.update!(email: nil)

expect(entries(managed)).to match_array([
manager.email
])
end
end

def entries(people = Person.all, labels = [])
Expand Down

0 comments on commit 540d8c7

Please sign in to comment.