openstreetmap-website/test/system/issues_test.rb
Andy Allan 085412f624 Use i18n for submit button for issue comments
Normally when an en-GB.yml translation is missing, rails falls back to en.yml. But when
using the submit helpers, if the en-GB translation is missing, rails knows how to create
a fallback like 'Create {model_name}' without touching the en.yml file. This string might
then be different from what the test expects, e.g. 'Add Comment'.

So it's important to set the language headers, to avoid phantomjs from picking up your desktop
preferences in this specific case.
2019-06-12 19:24:06 +02:00

119 lines
3.6 KiB
Ruby

require "application_system_test_case"
class IssuesTest < ApplicationSystemTestCase
include IssuesHelper
def test_view_issues_not_logged_in
visit issues_path
assert page.has_content?(I18n.t("users.login.title"))
end
def test_view_issues_normal_user
sign_in_as(create(:user))
visit issues_path
assert page.has_content?("Forbidden")
end
def test_view_no_issues
sign_in_as(create(:moderator_user))
visit issues_path
assert page.has_content?(I18n.t("issues.index.issues_not_found"))
end
def test_view_issues
sign_in_as(create(:moderator_user))
issues = create_list(:issue, 3, :assigned_role => "moderator")
visit issues_path
assert page.has_content?(issues.first.reported_user.display_name)
end
def test_view_issues_with_no_reported_user
sign_in_as(create(:moderator_user))
anonymous_note = create(:note_with_comments)
issue = create(:issue, :reportable => anonymous_note, :assigned_role => "moderator")
visit issues_path
assert page.has_content?(reportable_title(anonymous_note))
visit issue_path(issue)
assert page.has_content?(reportable_title(anonymous_note))
end
def test_search_issues_by_user
good_user = create(:user)
bad_user = create(:user)
create(:issue, :reportable => bad_user, :reported_user => bad_user, :assigned_role => "administrator")
sign_in_as(create(:administrator_user))
# No issues against the user
visit issues_path
fill_in "search_by_user", :with => good_user.display_name
click_on "Search"
assert_not page.has_content?(I18n.t("issues.index.user_not_found"))
assert page.has_content?(I18n.t("issues.index.issues_not_found"))
# User doesn't exist
visit issues_path
fill_in "search_by_user", :with => "Nonexistant User"
click_on "Search"
assert page.has_content?(I18n.t("issues.index.user_not_found"))
assert page.has_content?(I18n.t("issues.index.issues_not_found"))
# Find Issue against bad_user
visit issues_path
fill_in "search_by_user", :with => bad_user.display_name
click_on "Search"
assert_not page.has_content?(I18n.t("issues.index.user_not_found"))
assert_not page.has_content?(I18n.t("issues.index.issues_not_found"))
end
def test_commenting
issue = create(:issue)
sign_in_as(create(:moderator_user))
visit issue_path(issue)
fill_in :issue_comment_body, :with => "test comment"
click_on "Add Comment"
assert page.has_content?(I18n.t("issue_comments.create.comment_created"))
assert page.has_content?("test comment")
issue.reload
assert_equal issue.comments.first.body, "test comment"
end
def test_reassign_issue
issue = create(:issue)
assert_equal "administrator", issue.assigned_role
sign_in_as(create(:administrator_user))
visit issue_path(issue)
fill_in :issue_comment_body, :with => "reassigning to moderators"
check :reassign
click_on "Add Comment"
issue.reload
assert_equal "moderator", issue.assigned_role
end
def test_issue_index_with_multiple_roles
user1 = create(:user)
user2 = create(:user)
issue1 = create(:issue, :reportable => user1, :assigned_role => "administrator")
issue2 = create(:issue, :reportable => user2, :assigned_role => "moderator")
user = create(:administrator_user)
create(:user_role, :user => user, :role => "moderator")
sign_in_as(user)
visit issues_path
assert page.has_link?(I18n.t("issues.index.reports_count", :count => issue1.reports_count), :href => issue_path(issue1))
assert page.has_link?(I18n.t("issues.index.reports_count", :count => issue2.reports_count), :href => issue_path(issue2))
end
end