openstreetmap-website/test/system/changeset_comments_test.rb
2024-02-12 01:27:12 +03:00

162 lines
4.1 KiB
Ruby

require "application_system_test_case"
class ChangesetCommentsTest < ApplicationSystemTestCase
test "open changeset has a still open notice" do
changeset = create(:changeset)
sign_in_as(create(:user))
visit changeset_path(changeset)
within_sidebar do
assert_no_button "Comment"
assert_text "Changeset still open"
end
end
test "changeset has a login notice" do
changeset = create(:changeset, :closed)
visit changeset_path(changeset)
within_sidebar do
assert_no_button "Subscribe"
assert_no_button "Comment"
assert_link "Log in to join the discussion", :href => login_path(:referer => changeset_path(changeset))
end
end
test "can add a comment to a changeset" do
changeset = create(:changeset, :closed)
user = create(:user)
sign_in_as(user)
visit changeset_path(changeset)
within_sidebar do
assert_no_content "Comment from #{user.display_name}"
assert_no_content "Some newly added changeset comment"
assert_button "Comment", :disabled => true
fill_in "text", :with => "Some newly added changeset comment"
assert_button "Comment", :disabled => false
click_on "Comment"
assert_content "Comment from #{user.display_name}"
assert_content "Some newly added changeset comment"
end
end
test "regular users can't hide comments" do
changeset = create(:changeset, :closed)
create(:changeset_comment, :changeset => changeset, :body => "Unwanted comment")
sign_in_as(create(:user))
visit changeset_path(changeset)
within_sidebar do
assert_text "Unwanted comment"
assert_no_button "hide"
end
end
test "moderators can hide comments" do
changeset = create(:changeset, :closed)
create(:changeset_comment, :changeset => changeset, :body => "Unwanted comment")
visit changeset_path(changeset)
within_sidebar do
assert_text "Unwanted comment"
end
sign_in_as(create(:moderator_user))
visit changeset_path(changeset)
within_sidebar do
assert_text "Unwanted comment"
assert_button "hide", :exact => true
assert_no_button "unhide", :exact => true
click_on "hide", :exact => true
assert_text "Unwanted comment"
assert_no_button "hide", :exact => true
assert_button "unhide", :exact => true
end
sign_out
visit changeset_path(changeset)
within_sidebar do
assert_no_text "Unwanted comment"
end
end
test "moderators can unhide comments" do
changeset = create(:changeset, :closed)
create(:changeset_comment, :changeset => changeset, :body => "Wanted comment", :visible => false)
visit changeset_path(changeset)
within_sidebar do
assert_no_text "Wanted comment"
end
sign_in_as(create(:moderator_user))
visit changeset_path(changeset)
within_sidebar do
assert_text "Wanted comment"
assert_no_button "hide", :exact => true
assert_button "unhide", :exact => true
click_on "unhide", :exact => true
assert_text "Wanted comment"
assert_button "hide", :exact => true
assert_no_button "unhide", :exact => true
end
sign_out
visit changeset_path(changeset)
within_sidebar do
assert_text "Wanted comment"
end
end
test "can subscribe" do
changeset = create(:changeset, :closed)
user = create(:user)
sign_in_as(user)
visit changeset_path(changeset)
within_sidebar do
assert_button "Subscribe"
assert_no_button "Unsubscribe"
click_on "Subscribe"
assert_no_button "Subscribe"
assert_button "Unsubscribe"
end
end
test "can't subscribe when blocked" do
changeset = create(:changeset, :closed)
user = create(:user)
sign_in_as(user)
visit changeset_path(changeset)
create(:user_block, :user => user)
within_sidebar do
assert_no_text "Your access to the API has been blocked"
assert_button "Subscribe"
assert_no_button "Unsubscribe"
click_on "Subscribe"
assert_text "Your access to the API has been blocked"
assert_button "Subscribe"
assert_no_button "Unsubscribe"
end
end
end