]> git.openstreetmap.org Git - rails.git/blob - test/notifiers/changeset_notifier_test.rb
Merge remote-tracking branch 'upstream/pull/7070'
[rails.git] / test / notifiers / changeset_notifier_test.rb
1 # frozen_string_literal: true
2
3 require "test_helper"
4
5 class ChangesetCommentNotifierTest < ActiveSupport::TestCase
6   def setup
7     ActionMailer::Base.deliveries.clear
8   end
9
10   def test_send_email_when_subscribed
11     candidate_recipient = create(:user)
12     candidate_recipient.notification_preferences.update("changeset_comment" => ["email"])
13
14     trigger_notification(candidate_recipient)
15
16     email = ActionMailer::Base.deliveries.first
17     assert_equal [candidate_recipient.email], email.to
18   end
19
20   def test_do_not_send_email_when_not_subscribed
21     candidate_recipient = create(:user)
22     candidate_recipient.notification_preferences.update("changeset_comment" => [])
23
24     trigger_notification(candidate_recipient)
25
26     assert_empty ActionMailer::Base.deliveries
27   end
28
29   private
30
31   def trigger_notification(changeset_author)
32     changeset = create(:changeset, :user => changeset_author)
33     create(:changeset_subscription, :changeset => changeset, :subscriber => changeset_author)
34
35     comment_author = create(:user)
36     changeset_comment = create(:changeset_comment, :author => comment_author, :changeset => changeset)
37
38     perform_enqueued_jobs do
39       Nominatim.stub :describe_location, nil do
40         ChangesetCommentNotifier.with(:record => changeset_comment).deliver
41       end
42     end
43   end
44 end