aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/models/calendar_observer_spec.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/spec/models/calendar_observer_spec.rb b/spec/models/calendar_observer_spec.rb
new file mode 100644
index 000000000..abb462d25
--- /dev/null
+++ b/spec/models/calendar_observer_spec.rb
@@ -0,0 +1,43 @@
+require 'rails_helper'
+
+RSpec.describe CalendarObserver, type: :observer do
+ let(:calendar) { create(:calendar, shared: true) }
+ let(:user) { create(:user, organisation: create(:organisation)) }
+
+ context 'after_update' do
+ it 'should observe calendar updates' do
+ expect(CalendarObserver.instance).to receive(:after_update).with calendar
+ calendar.update_attribute(:name, 'edited_name')
+ end
+
+ it 'should schedule mailer on calendar update' do
+ calendar.name = 'edited_name'
+ expect(MailerJob).to receive(:perform_later).with 'CalendarMailer', 'updated', [calendar, user]
+ calendar.save
+ end
+
+ it 'should not schedule mailer for none shared calendar on update' do
+ calendar = create(:calendar, shared: false)
+ calendar.name = 'edited_name'
+ expect(MailerJob).to_not receive(:perform_later).with 'CalendarMailer', 'updated', [calendar, user]
+ calendar.save
+ end
+ end
+
+ context 'after_create' do
+ it 'should observe calendar create' do
+ expect(CalendarObserver.instance).to receive(:after_create)
+ build(:calendar).save
+ end
+
+ it 'should schedule mailer on calendar create' do
+ expect(MailerJob).to receive(:perform_later).with 'CalendarMailer', 'created', [anything, user]
+ build(:calendar, shared: true).save
+ end
+
+ it 'should not schedule mailer for none shared calendar on create' do
+ expect(MailerJob).to_not receive(:perform_later).with 'CalendarMailer', 'created', [anything, user]
+ build(:calendar, shared: false).save
+ end
+ end
+end