]> git.openstreetmap.org Git - rails.git/blob - test/system/web_notifications_test.rb
Localisation updates from https://translatewiki.net.
[rails.git] / test / system / web_notifications_test.rb
1 # frozen_string_literal: true
2
3 require "application_system_test_case"
4
5 class WebNotificationsTest < ApplicationSystemTestCase
6   test "no notifications available" do
7     user = create(:user)
8     sign_in_as(user)
9
10     click_on user.display_name
11     click_on "My Notifications"
12
13     assert_text "Notifications"
14     assert_text "You have no notifications"
15   end
16
17   test "read latest notifications" do
18     changeset_author = create(:user)
19     commenter = create(:user, :display_name => "Commenter")
20     setup_changeset_comment(
21       :changeset_author => changeset_author,
22       :commenter => commenter
23     )
24
25     sign_in_as(changeset_author)
26
27     click_on changeset_author.display_name
28     click_on "My Notifications"
29
30     assert_text "Notifications"
31     assert_text "Changeset comment"
32     assert_text "User Commenter left a comment on changeset"
33   end
34
35   test "pagination" do
36     changeset_author = create(:user)
37     commenter = create(:user, :display_name => "Commenter")
38     1.upto(30).each do |i|
39       setup_changeset_comment(
40         :changeset_author => changeset_author,
41         :commenter => commenter,
42         :comment_attrs => {
43           :body => "This is comment number #{i}"
44         }
45       )
46     end
47
48     sign_in_as(changeset_author)
49
50     click_on changeset_author.display_name
51     click_on "My Notifications"
52
53     assert_text "This is comment number 30"
54     assert_no_text "This is comment number 10"
55     click_on "Older Notifications"
56     assert_no_text "This is comment number 30"
57     assert_text "This is comment number 10"
58   end
59
60   private
61
62   def setup_changeset_comment(changeset_author:, commenter:, comment_attrs: {})
63     changeset = create(:changeset, :user => changeset_author)
64     create(:changeset_subscription, :changeset => changeset, :subscriber => changeset_author)
65
66     comment = create(:changeset_comment, :changeset => changeset, :author => commenter, **comment_attrs)
67     create(:changeset_subscription, :changeset => changeset, :subscriber => commenter)
68     ChangesetCommentNotifier.with(:record => comment).deliver
69   end
70 end