diff --git a/spec/controllers/event/participations_controller_spec.rb b/spec/controllers/event/participations_controller_spec.rb index f1fcd29..8651a10 100644 --- a/spec/controllers/event/participations_controller_spec.rb +++ b/spec/controllers/event/participations_controller_spec.rb @@ -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 #{user} in Eventus 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 #{user} in Eventus 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 #{user} in Eventus 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