diff options
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/models/calendar_observer_spec.rb | 43 |
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 |
