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_selector ".web-notification", :count => 20
54 assert_text "This is comment number 30"
55 assert_no_text "This is comment number 10"
56 click_on "Older Notifications"
57 assert_selector ".web-notification", :count => 10
58 assert_no_text "This is comment number 30"
59 assert_text "This is comment number 10"
64 def setup_changeset_comment(changeset_author:, commenter:, comment_attrs: {})
65 changeset = create(:changeset, :user => changeset_author)
66 create(:changeset_subscription, :changeset => changeset, :subscriber => changeset_author)
68 comment = create(:changeset_comment, :changeset => changeset, :author => commenter, **comment_attrs)
69 create(:changeset_subscription, :changeset => changeset, :subscriber => commenter)
70 ChangesetCommentNotifier.with(:record => comment).deliver