1 require "application_system_test_case"
3 class IssuesTest < ApplicationSystemTestCase
6 def test_view_issues_not_logged_in
9 within_content_heading do
10 assert_content "Log In"
14 def test_view_issues_normal_user
15 sign_in_as(create(:user))
18 assert_content "Forbidden"
21 def test_view_no_issues
22 sign_in_as(create(:moderator_user))
25 assert_content I18n.t("issues.page.issues_not_found")
29 sign_in_as(create(:moderator_user))
30 issues = create_list(:issue, 3, :assigned_role => "moderator")
33 assert_content issues.first.reported_user.display_name
36 def test_view_issue_with_report
37 sign_in_as(create(:moderator_user))
38 issue = create(:issue, :assigned_role => "moderator")
39 issue.reports << create(:report, :details => "test report text **with kramdown**")
41 visit issue_path(issue)
42 assert_content I18n.t("issues.show.reports", :count => 1)
43 assert_content "test report text with kramdown"
44 assert_selector "strong", :text => "with kramdown"
47 def test_view_issue_rich_text_container
48 sign_in_as(create(:moderator_user))
49 issue = create(:issue, :assigned_role => "moderator")
50 issue.reports << create(:report, :details => "paragraph one\n\n---\n\nparagraph two")
52 visit issue_path(issue)
53 assert_content I18n.t("issues.show.reports", :count => 1)
54 richtext = find "div.richtext"
55 richtext_elements = richtext.all "*"
56 assert_equal 3, richtext_elements.size
57 assert_equal "p", richtext_elements[0].tag_name
58 assert_equal "paragraph one", richtext_elements[0].text
59 assert_equal "hr", richtext_elements[1].tag_name
60 assert_equal "p", richtext_elements[2].tag_name
61 assert_equal "paragraph two", richtext_elements[2].text
64 def test_view_issues_with_no_reported_user
65 sign_in_as(create(:moderator_user))
66 anonymous_note = create(:note_with_comments)
67 issue = create(:issue, :reportable => anonymous_note, :assigned_role => "moderator")
70 assert_content reportable_title(anonymous_note)
72 visit issue_path(issue)
73 assert_content reportable_title(anonymous_note)
76 def test_search_issues_by_user
77 good_user = create(:user)
78 bad_user = create(:user)
79 create(:issue, :reportable => bad_user, :reported_user => bad_user, :assigned_role => "administrator")
81 sign_in_as(create(:administrator_user))
83 # No issues against the user
85 fill_in "search_by_user", :with => good_user.display_name
87 assert_no_content I18n.t("issues.page.user_not_found")
88 assert_content I18n.t("issues.page.issues_not_found")
92 fill_in "search_by_user", :with => "Nonexistent User"
94 assert_content I18n.t("issues.page.user_not_found")
95 assert_no_content I18n.t("issues.page.issues_not_found")
97 # Find Issue against bad_user
99 fill_in "search_by_user", :with => bad_user.display_name
101 assert_no_content I18n.t("issues.page.user_not_found")
102 assert_no_content I18n.t("issues.page.issues_not_found")
106 issue = create(:issue, :assigned_role => "moderator")
107 sign_in_as(create(:moderator_user))
109 visit issue_path(issue)
111 fill_in :issue_comment_body, :with => "test comment"
112 click_on "Add Comment"
113 assert_content I18n.t("issue_comments.create.comment_created")
114 assert_content "test comment"
117 assert_equal("test comment", issue.comments.first.body)
120 def test_reassign_issue_to_moderators
121 issue = create(:issue, :assigned_role => "administrator")
122 sign_in_as(create(:administrator_user))
124 visit issue_path(issue)
126 assert_unchecked_field "Reassign Issue to Moderators"
127 fill_in :issue_comment_body, :with => "reassigning to moderators"
128 check "Reassign Issue to Moderators"
129 click_on "Add Comment"
131 assert_content "and the issue was reassigned"
132 assert_current_path issues_path(:status => "open")
135 assert_equal "moderator", issue.assigned_role
138 def test_reassign_issue_to_administrators
139 issue = create(:issue, :assigned_role => "moderator")
140 sign_in_as(create(:moderator_user))
142 visit issue_path(issue)
144 assert_unchecked_field "Reassign Issue to Administrators"
145 fill_in :issue_comment_body, :with => "reassigning to administrators"
146 check "Reassign Issue to Administrators"
147 click_on "Add Comment"
149 assert_content "and the issue was reassigned"
150 assert_current_path issues_path(:status => "open")
153 assert_equal "administrator", issue.assigned_role
156 def test_reassign_issue_as_super_user
157 issue = create(:issue)
158 sign_in_as(create(:super_user))
160 visit issue_path(issue)
162 fill_in :issue_comment_body, :with => "reassigning to moderators"
163 check "Reassign Issue to Moderators"
164 click_on "Add Comment"
166 assert_content "and the issue was reassigned"
167 assert_current_path issue_path(issue)
170 def test_issue_index_with_multiple_roles
171 user1 = create(:user)
172 user2 = create(:user)
173 issue1 = create(:issue, :reportable => user1, :assigned_role => "administrator")
174 issue2 = create(:issue, :reportable => user2, :assigned_role => "moderator")
176 user = create(:administrator_user)
177 create(:user_role, :user => user, :role => "moderator")
182 assert_link I18n.t("issues.page.reports_count", :count => issue1.reports_count), :href => issue_path(issue1)
183 assert_link I18n.t("issues.page.reports_count", :count => issue2.reports_count), :href => issue_path(issue2)
186 def test_issues_pagination
187 1.upto(8).each do |n|
188 user = create(:user, :display_name => "extra_#{n}")
189 create(:issue, :reportable => user, :reported_user => user, :assigned_role => "administrator")
192 sign_in_as(create(:administrator_user))
194 visit issues_path(:limit => 5)
197 assert_no_content I18n.t("issues.page.user_not_found")
198 assert_no_content I18n.t("issues.page.issues_not_found")
199 4.upto(8).each do |n|
200 assert_content(/extra_#{n}[^\d]/i, :count => 2)
202 1.upto(3).each do |n|
203 assert_no_content(/extra_#{n}[^\d]/i)
207 click_on "Older Issues"
208 assert_no_content I18n.t("issues.page.user_not_found")
209 assert_no_content I18n.t("issues.page.issues_not_found")
210 4.upto(8).each do |n|
211 assert_no_content(/extra_#{n}[^\d]/i)
213 1.upto(3).each do |n|
214 assert_content(/extra_#{n}[^\d]/i, :count => 2)
218 click_on "Newer Issues"
219 assert_no_content I18n.t("issues.page.user_not_found")
220 assert_no_content I18n.t("issues.page.issues_not_found")
221 4.upto(8).each do |n|
222 assert_content(/extra_#{n}[^\d]/i, :count => 2)
224 1.upto(3).each do |n|
225 assert_no_content(/extra_#{n}[^\d]/i)
229 def test_single_issue_reporters
230 sign_in_as(create(:moderator_user))
231 issue = create(:issue, :assigned_role => "moderator")
232 issue.reports << create(:report, :user => create(:user, :display_name => "Test Name"))
235 assert_content issue.reported_user.display_name
236 assert_content issue.reports.first.user.display_name
239 def test_multiple_issue_reporters
240 sign_in_as(create(:moderator_user))
241 issue = create(:issue, :assigned_role => "moderator")
243 create_list(:report, 5, :issue => issue)
246 0.upto(1).each do |n|
247 assert_no_content issue.reports[n].user.display_name
249 2.upto(4).each do |n|
250 assert_content issue.reports[n].user.display_name
254 def test_ordering_issue_reporters
255 sign_in_as(create(:moderator_user))
256 issue = create(:issue, :assigned_role => "moderator")
258 create_list(:report, 5, :issue => issue)
260 4.downto(0).each do |n|
261 issue.reports << create(:report, :user => issue.reports[n].user)
265 0.upto(2).each do |n|
266 assert_content issue.reports[n].user.display_name
268 3.upto(4).each do |n|
269 assert_no_content issue.reports[n].user.display_name