1 # frozen_string_literal: true
3 require "application_system_test_case"
5 class WebNotificationsTest < ApplicationSystemTestCase
6 test "no notifications available" do
10 click_on user.display_name
11 click_on "My Notifications"
13 assert_text "Notifications"
14 assert_text "You have no notifications"
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
25 sign_in_as(changeset_author)
27 click_on changeset_author.display_name
28 click_on "My Notifications"
30 assert_text "Notifications"
31 assert_text "Changeset comment"
32 assert_text "User Commenter left a comment on changeset"
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,
43 :body => "This is comment number #{i}"
48 sign_in_as(changeset_author)
50 click_on changeset_author.display_name
51 click_on "My Notifications"
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"
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)
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