1 # frozen_string_literal: true
 
   3 require "application_system_test_case"
 
   5 class ChangesetCommentsTest < ApplicationSystemTestCase
 
   6   test "open changeset has a still open notice" do
 
   7     changeset = create(:changeset)
 
   8     sign_in_as(create(:user))
 
   9     visit changeset_path(changeset)
 
  12       assert_no_button "Comment"
 
  13       assert_text "Changeset still open"
 
  17   test "changeset has a login notice" do
 
  18     changeset = create(:changeset, :closed)
 
  19     visit changeset_path(changeset)
 
  22       assert_no_button "Subscribe"
 
  23       assert_no_button "Comment"
 
  24       assert_link "Log in to join the discussion", :href => login_path(:referer => changeset_path(changeset))
 
  28   test "can add a comment to a changeset" do
 
  29     changeset = create(:changeset, :closed)
 
  32     visit changeset_path(changeset)
 
  35       assert_no_content "Comment from #{user.display_name}"
 
  36       assert_no_content "Some newly added changeset comment"
 
  37       assert_button "Comment", :disabled => true
 
  39       fill_in "text", :with => "Some newly added changeset comment"
 
  41       assert_button "Comment", :disabled => false
 
  45       assert_content "Comment from #{user.display_name}"
 
  46       assert_content "Some newly added changeset comment"
 
  50   test "regular users can't hide comments" do
 
  51     changeset = create(:changeset, :closed)
 
  52     create(:changeset_comment, :changeset => changeset, :body => "Unwanted comment")
 
  53     sign_in_as(create(:user))
 
  54     visit changeset_path(changeset)
 
  57       assert_text "Unwanted comment"
 
  58       assert_no_button "hide"
 
  62   test "moderators can hide comments" do
 
  63     changeset = create(:changeset, :closed)
 
  64     create(:changeset_comment, :changeset => changeset, :body => "Unwanted comment")
 
  66     visit changeset_path(changeset)
 
  69       assert_text "Unwanted comment"
 
  72     sign_in_as(create(:moderator_user))
 
  73     visit changeset_path(changeset)
 
  76       assert_text "Unwanted comment"
 
  77       assert_button "hide", :exact => true
 
  78       assert_no_button "unhide", :exact => true
 
  80       click_on "hide", :exact => true
 
  82       assert_text "Unwanted comment"
 
  83       assert_no_button "hide", :exact => true
 
  84       assert_button "unhide", :exact => true
 
  88     visit changeset_path(changeset)
 
  91       assert_no_text "Unwanted comment"
 
  95   test "moderators can unhide comments" do
 
  96     changeset = create(:changeset, :closed)
 
  97     create(:changeset_comment, :changeset => changeset, :body => "Wanted comment", :visible => false)
 
  99     visit changeset_path(changeset)
 
 102       assert_no_text "Wanted comment"
 
 105     sign_in_as(create(:moderator_user))
 
 106     visit changeset_path(changeset)
 
 109       assert_text "Wanted comment"
 
 110       assert_no_button "hide", :exact => true
 
 111       assert_button "unhide", :exact => true
 
 113       click_on "unhide", :exact => true
 
 115       assert_text "Wanted comment"
 
 116       assert_button "hide", :exact => true
 
 117       assert_no_button "unhide", :exact => true
 
 121     visit changeset_path(changeset)
 
 124       assert_text "Wanted comment"
 
 128   test "can subscribe" do
 
 129     changeset = create(:changeset, :closed)
 
 132     visit changeset_path(changeset)
 
 135       assert_button "Subscribe"
 
 136       assert_no_button "Unsubscribe"
 
 140       assert_no_button "Subscribe"
 
 141       assert_button "Unsubscribe"
 
 145   test "can't subscribe when blocked" do
 
 146     changeset = create(:changeset, :closed)
 
 149     visit changeset_path(changeset)
 
 150     create(:user_block, :user => user)
 
 153       assert_no_text "Your access to the API has been blocked"
 
 154       assert_button "Subscribe"
 
 155       assert_no_button "Unsubscribe"
 
 159       assert_text "Your access to the API has been blocked"
 
 160       assert_button "Subscribe"
 
 161       assert_no_button "Unsubscribe"