From 5000ddeebb3412a9c82008dd02a37a1312241621 Mon Sep 17 00:00:00 2001 From: Chris <76159444+hunchr@users.noreply.github.com> Date: Thu, 26 Sep 2024 08:35:23 +0200 Subject: [PATCH] Add specs --- .../participation_canceled_mailer_spec.rb | 25 +++++++++++++++++++ spec/models/event/participation_spec.rb | 12 +++++++++ 2 files changed, 37 insertions(+) create mode 100644 spec/mailers/event/participation_canceled_mailer_spec.rb diff --git a/spec/mailers/event/participation_canceled_mailer_spec.rb b/spec/mailers/event/participation_canceled_mailer_spec.rb new file mode 100644 index 000000000..43d721ccb --- /dev/null +++ b/spec/mailers/event/participation_canceled_mailer_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +# Copyright (c) 2024, Schweizer Alpen-Club. This file is part of +# hitobito_sac_cas and licensed under the Affero General Public License version 3 +# or later. See the COPYING file at the top-level directory or at +# https://github.com/hitobito/hitobito_sac_cas. + +require "spec_helper" + +describe Event::ParticipationCanceledMailer do + let(:event) { Fabricate(:sac_open_course) } + let(:participation) { event.participations.create!(person: people(:mitglied)) } + let(:mail) { described_class.confirmation(participation) } + + before { event.groups.first.update!(course_admin_email: "admin@example.com") } + + it "sends to email addresses of participant" do + expect(mail.to).to match_array(["e.hillary@hitobito.example.com"]) + expect(mail.bcc).to match_array(["admin@example.com"]) + expect(mail.body.to_s).to include( + "Hallo Edmund,", + "Deine Abmeldung für den Kurs Eventus (Nummer: #{event.number}) wurde bestätigt." + ) + end +end diff --git a/spec/models/event/participation_spec.rb b/spec/models/event/participation_spec.rb index c2e43e4e9..a499bf6b0 100644 --- a/spec/models/event/participation_spec.rb +++ b/spec/models/event/participation_spec.rb @@ -8,6 +8,8 @@ require "spec_helper" describe Event::Participation do + include ActiveJob::TestHelper + describe "::callbacks" do subject(:participation) { Fabricate(:event_participation, event: events(:top_course)) } @@ -120,4 +122,14 @@ def build_role(key, role) end end end + + describe "canceled" do + let(:event) { Fabricate(:sac_open_course) } + let(:participation) { event.participations.create!(person: people(:mitglied)) } + + it "sends a confirmation email" do + expect { participation.update(state: :canceled, canceled_at: Time.zone.today) } + .to have_enqueued_mail(Event::ParticipationCanceledMailer, :confirmation).once + end + end end