]> git.openstreetmap.org Git - rails.git/blob - test/system/changeset_comments_test.rb
Merge remote-tracking branch 'upstream/pull/4747'
[rails.git] / test / system / changeset_comments_test.rb
1 require "application_system_test_case"
2
3 class ChangesetCommentsTest < ApplicationSystemTestCase
4   test "open changeset has a still open notice" do
5     changeset = create(:changeset)
6     sign_in_as(create(:user))
7     visit changeset_path(changeset)
8
9     within_sidebar do
10       assert_no_button "Comment"
11       assert_text "Changeset still open"
12     end
13   end
14
15   test "changeset has a login notice" do
16     changeset = create(:changeset, :closed)
17     visit changeset_path(changeset)
18
19     within_sidebar do
20       assert_no_button "Subscribe"
21       assert_no_button "Comment"
22       assert_link "Log in to join the discussion", :href => login_path(:referer => changeset_path(changeset))
23     end
24   end
25
26   test "can add a comment to a changeset" do
27     changeset = create(:changeset, :closed)
28     user = create(:user)
29     sign_in_as(user)
30     visit changeset_path(changeset)
31
32     within_sidebar do
33       assert_no_content "Comment from #{user.display_name}"
34       assert_no_content "Some newly added changeset comment"
35       assert_button "Comment", :disabled => true
36
37       fill_in "text", :with => "Some newly added changeset comment"
38
39       assert_button "Comment", :disabled => false
40
41       click_on "Comment"
42
43       assert_content "Comment from #{user.display_name}"
44       assert_content "Some newly added changeset comment"
45     end
46   end
47
48   test "regular users can't hide comments" do
49     changeset = create(:changeset, :closed)
50     create(:changeset_comment, :changeset => changeset, :body => "Unwanted comment")
51     sign_in_as(create(:user))
52     visit changeset_path(changeset)
53
54     within_sidebar do
55       assert_text "Unwanted comment"
56       assert_no_button "hide"
57     end
58   end
59
60   test "moderators can hide comments" do
61     changeset = create(:changeset, :closed)
62     create(:changeset_comment, :changeset => changeset, :body => "Unwanted comment")
63
64     visit changeset_path(changeset)
65
66     within_sidebar do
67       assert_text "Unwanted comment"
68     end
69
70     sign_in_as(create(:moderator_user))
71     visit changeset_path(changeset)
72
73     within_sidebar do
74       assert_text "Unwanted comment"
75       assert_button "hide", :exact => true
76       assert_no_button "unhide", :exact => true
77
78       click_on "hide", :exact => true
79
80       assert_text "Unwanted comment"
81       assert_no_button "hide", :exact => true
82       assert_button "unhide", :exact => true
83     end
84
85     sign_out
86     visit changeset_path(changeset)
87
88     within_sidebar do
89       assert_no_text "Unwanted comment"
90     end
91   end
92
93   test "moderators can unhide comments" do
94     changeset = create(:changeset, :closed)
95     create(:changeset_comment, :changeset => changeset, :body => "Wanted comment", :visible => false)
96
97     visit changeset_path(changeset)
98
99     within_sidebar do
100       assert_no_text "Wanted comment"
101     end
102
103     sign_in_as(create(:moderator_user))
104     visit changeset_path(changeset)
105
106     within_sidebar do
107       assert_text "Wanted comment"
108       assert_no_button "hide", :exact => true
109       assert_button "unhide", :exact => true
110
111       click_on "unhide", :exact => true
112
113       assert_text "Wanted comment"
114       assert_button "hide", :exact => true
115       assert_no_button "unhide", :exact => true
116     end
117
118     sign_out
119     visit changeset_path(changeset)
120
121     within_sidebar do
122       assert_text "Wanted comment"
123     end
124   end
125
126   test "can subscribe" do
127     changeset = create(:changeset, :closed)
128     user = create(:user)
129     sign_in_as(user)
130     visit changeset_path(changeset)
131
132     within_sidebar do
133       assert_button "Subscribe"
134       assert_no_button "Unsubscribe"
135
136       click_on "Subscribe"
137
138       assert_no_button "Subscribe"
139       assert_button "Unsubscribe"
140     end
141   end
142
143   test "can't subscribe when blocked" do
144     changeset = create(:changeset, :closed)
145     user = create(:user)
146     sign_in_as(user)
147     visit changeset_path(changeset)
148     create(:user_block, :user => user)
149
150     within_sidebar do
151       assert_no_text "Your access to the API has been blocked"
152       assert_button "Subscribe"
153       assert_no_button "Unsubscribe"
154
155       click_on "Subscribe"
156
157       assert_text "Your access to the API has been blocked"
158       assert_button "Subscribe"
159       assert_no_button "Unsubscribe"
160     end
161   end
162 end