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
 
 273   def test_view_managed_issue
 
 274     issue = create(:issue, :assigned_role => "moderator")
 
 275     issue.reports << create(:report)
 
 276     moderator_user = create(:moderator_user)
 
 278     sign_in_as(moderator_user)
 
 281     within_content_body do
 
 282       assert_no_link moderator_user.display_name
 
 287     within_content_heading do
 
 288       assert_content "Open Issue ##{issue.id}"
 
 292       assert_content "Resolved Issue ##{issue.id}"
 
 297     within_content_body do
 
 298       assert_link moderator_user.display_name