aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorXinhui2017-07-07 16:02:51 +0200
committerXinhui2017-07-07 16:04:38 +0200
commit6f06b32a423abe8fb6ae7e69589eaa72d5dfe728 (patch)
tree183031572130e7d9ab92538f7bc503cc9ff661f4 /spec
parent68319d7e9866a1fa72e1b4439989d0c364dd63b2 (diff)
downloadchouette-core-6f06b32a423abe8fb6ae7e69589eaa72d5dfe728.tar.bz2
Observer for model Calendar
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