Merge remote-tracking branch 'upstream/pull/1576'
This commit is contained in:
commit
7441f15b4f
40 changed files with 1887 additions and 5 deletions
27
test/controllers/issue_comments_controller_test.rb
Normal file
27
test/controllers/issue_comments_controller_test.rb
Normal file
|
@ -0,0 +1,27 @@
|
|||
require "test_helper"
|
||||
|
||||
class IssueCommentsControllerTest < ActionController::TestCase
|
||||
def test_comment_by_normal_user
|
||||
issue = create(:issue)
|
||||
|
||||
# Login as normal user
|
||||
session[:user] = create(:user).id
|
||||
|
||||
post :create, :params => { :issue_id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_redirected_to root_path
|
||||
assert_equal 0, issue.comments.length
|
||||
end
|
||||
|
||||
def test_comment
|
||||
issue = create(:issue)
|
||||
|
||||
# Login as administrator
|
||||
session[:user] = create(:administrator_user).id
|
||||
|
||||
post :create, :params => { :issue_id => issue.id, :issue_comment => { :body => "test comment" } }
|
||||
assert_response :redirect
|
||||
assert_redirected_to issue
|
||||
assert_equal 1, issue.comments.length
|
||||
end
|
||||
end
|
144
test/controllers/issues_controller_test.rb
Normal file
144
test/controllers/issues_controller_test.rb
Normal file
|
@ -0,0 +1,144 @@
|
|||
require "test_helper"
|
||||
|
||||
class IssuesControllerTest < ActionController::TestCase
|
||||
def test_index
|
||||
# Access issues list without login
|
||||
get :index
|
||||
assert_response :redirect
|
||||
assert_redirected_to login_path(:referer => issues_path)
|
||||
|
||||
# Access issues list as normal user
|
||||
session[:user] = create(:user).id
|
||||
get :index
|
||||
assert_response :redirect
|
||||
assert_redirected_to root_path
|
||||
|
||||
# Access issues list as administrator
|
||||
session[:user] = create(:administrator_user).id
|
||||
get :index
|
||||
assert_response :success
|
||||
|
||||
# Access issues list as moderator
|
||||
session[:user] = create(:moderator_user).id
|
||||
get :index
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
def test_show
|
||||
target_user = create(:user)
|
||||
issue = create(:issue, :reportable => target_user, :reported_user => target_user)
|
||||
|
||||
# Access issue without login
|
||||
get :show, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_redirected_to login_path(:referer => issue_path(issue))
|
||||
|
||||
# Access issue as normal user
|
||||
session[:user] = create(:user).id
|
||||
get :show, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_redirected_to root_path
|
||||
|
||||
# Access issue as administrator
|
||||
session[:user] = create(:administrator_user).id
|
||||
get :show, :params => { :id => issue.id }
|
||||
assert_response :success
|
||||
|
||||
# Access issue as moderator
|
||||
session[:user] = create(:moderator_user).id
|
||||
get :show, :params => { :id => issue.id }
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
def test_resolve
|
||||
target_user = create(:user)
|
||||
issue = create(:issue, :reportable => target_user, :reported_user => target_user)
|
||||
|
||||
# Resolve issue without login
|
||||
get :resolve, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_redirected_to login_path(:referer => resolve_issue_path(issue))
|
||||
|
||||
# Resolve issue as normal user
|
||||
session[:user] = create(:user).id
|
||||
get :resolve, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_redirected_to root_path
|
||||
|
||||
# Resolve issue as administrator
|
||||
session[:user] = create(:administrator_user).id
|
||||
get :resolve, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_equal true, issue.reload.resolved?
|
||||
|
||||
issue.reopen!
|
||||
|
||||
# Resolve issue as moderator
|
||||
session[:user] = create(:moderator_user).id
|
||||
get :resolve, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_equal true, issue.reload.resolved?
|
||||
end
|
||||
|
||||
def test_ignore
|
||||
target_user = create(:user)
|
||||
issue = create(:issue, :reportable => target_user, :reported_user => target_user)
|
||||
|
||||
# Ignore issue without login
|
||||
get :ignore, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_redirected_to login_path(:referer => ignore_issue_path(issue))
|
||||
|
||||
# Ignore issue as normal user
|
||||
session[:user] = create(:user).id
|
||||
get :ignore, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_redirected_to root_path
|
||||
|
||||
# Ignore issue as administrator
|
||||
session[:user] = create(:administrator_user).id
|
||||
get :ignore, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_equal true, issue.reload.ignored?
|
||||
|
||||
issue.reopen!
|
||||
|
||||
# Ignore issue as moderator
|
||||
session[:user] = create(:moderator_user).id
|
||||
get :ignore, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_equal true, issue.reload.ignored?
|
||||
end
|
||||
|
||||
def test_reopen
|
||||
target_user = create(:user)
|
||||
issue = create(:issue, :reportable => target_user, :reported_user => target_user)
|
||||
|
||||
issue.resolve!
|
||||
|
||||
# Reopen issue without login
|
||||
get :reopen, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_redirected_to login_path(:referer => reopen_issue_path(issue))
|
||||
|
||||
# Reopen issue as normal user
|
||||
session[:user] = create(:user).id
|
||||
get :reopen, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_redirected_to root_path
|
||||
|
||||
# Reopen issue as administrator
|
||||
session[:user] = create(:administrator_user).id
|
||||
get :reopen, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_equal true, issue.reload.open?
|
||||
|
||||
issue.resolve!
|
||||
|
||||
# Reopen issue as moderator
|
||||
session[:user] = create(:moderator_user).id
|
||||
get :reopen, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_equal true, issue.reload.open?
|
||||
end
|
||||
end
|
131
test/controllers/reports_controller_test.rb
Normal file
131
test/controllers/reports_controller_test.rb
Normal file
|
@ -0,0 +1,131 @@
|
|||
require "test_helper"
|
||||
|
||||
class ReportsControllerTest < ActionController::TestCase
|
||||
def test_new_report_without_login
|
||||
target_user = create(:user)
|
||||
get :new, :params => { :reportable_id => target_user.id, :reportable_type => "User" }
|
||||
assert_response :redirect
|
||||
assert_redirected_to login_path(:referer => new_report_path(:reportable_id => target_user.id, :reportable_type => "User"))
|
||||
end
|
||||
|
||||
def test_new_report_after_login
|
||||
target_user = create(:user)
|
||||
|
||||
session[:user] = create(:user).id
|
||||
|
||||
# Create an Issue and a report
|
||||
get :new, :params => { :reportable_id => target_user.id, :reportable_type => "User" }
|
||||
assert_response :success
|
||||
assert_difference "Issue.count", 1 do
|
||||
details = "Details of a report"
|
||||
category = "other"
|
||||
post :create,
|
||||
:params => {
|
||||
:report => {
|
||||
:details => details,
|
||||
:category => category,
|
||||
:issue => { :reportable_id => target_user.id, :reportable_type => "User" }
|
||||
}
|
||||
}
|
||||
end
|
||||
assert_response :redirect
|
||||
assert_redirected_to user_path(target_user.display_name)
|
||||
end
|
||||
|
||||
def test_new_report_with_incomplete_details
|
||||
# Test creation of a new issue and a new report
|
||||
target_user = create(:user)
|
||||
|
||||
# Login
|
||||
session[:user] = create(:user).id
|
||||
|
||||
# Create an Issue and a report
|
||||
get :new, :params => { :reportable_id => target_user.id, :reportable_type => "User" }
|
||||
assert_response :success
|
||||
assert_difference "Issue.count", 1 do
|
||||
details = "Details of a report"
|
||||
category = "other"
|
||||
post :create,
|
||||
:params => {
|
||||
:report => {
|
||||
:details => details,
|
||||
:category => category,
|
||||
:issue => { :reportable_id => target_user.id, :reportable_type => "User" }
|
||||
}
|
||||
}
|
||||
end
|
||||
assert_response :redirect
|
||||
assert_redirected_to user_path(target_user.display_name)
|
||||
|
||||
issue = Issue.last
|
||||
|
||||
assert_equal 1, issue.reports.count
|
||||
|
||||
get :new, :params => { :reportable_id => target_user.id, :reportable_type => "User" }
|
||||
assert_response :success
|
||||
|
||||
# Report without details
|
||||
assert_no_difference "Issue.count" do
|
||||
category = "other"
|
||||
post :create,
|
||||
:params => {
|
||||
:report => {
|
||||
:category => category,
|
||||
:issue => { :reportable_id => 1, :reportable_type => "User" }
|
||||
}
|
||||
}
|
||||
end
|
||||
assert_response :redirect
|
||||
|
||||
assert_equal 1, issue.reports.count
|
||||
end
|
||||
|
||||
def test_new_report_with_complete_details
|
||||
# Test creation of a new issue and a new report
|
||||
target_user = create(:user)
|
||||
|
||||
# Login
|
||||
session[:user] = create(:user).id
|
||||
|
||||
# Create an Issue and a report
|
||||
get :new, :params => { :reportable_id => target_user.id, :reportable_type => "User" }
|
||||
assert_response :success
|
||||
assert_difference "Issue.count", 1 do
|
||||
details = "Details of a report"
|
||||
category = "other"
|
||||
post :create,
|
||||
:params => {
|
||||
:report => {
|
||||
:details => details,
|
||||
:category => category,
|
||||
:issue => { :reportable_id => target_user.id, :reportable_type => "User" }
|
||||
}
|
||||
}
|
||||
end
|
||||
assert_response :redirect
|
||||
assert_redirected_to user_path(target_user.display_name)
|
||||
|
||||
issue = Issue.last
|
||||
|
||||
assert_equal 1, issue.reports.count
|
||||
|
||||
# Create a report for an existing Issue
|
||||
get :new, :params => { :reportable_id => target_user.id, :reportable_type => "User" }
|
||||
assert_response :success
|
||||
assert_no_difference "Issue.count" do
|
||||
details = "Details of another report under the same issue"
|
||||
category = "other"
|
||||
post :create,
|
||||
:params => {
|
||||
:report => {
|
||||
:details => details,
|
||||
:category => category,
|
||||
:issue => { :reportable_id => target_user.id, :reportable_type => "User" }
|
||||
}
|
||||
}
|
||||
end
|
||||
assert_response :redirect
|
||||
|
||||
assert_equal 2, issue.reports.count
|
||||
end
|
||||
end
|
7
test/factories/issues.rb
Normal file
7
test/factories/issues.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
FactoryBot.define do
|
||||
factory :issue do
|
||||
# Default to reporting users
|
||||
association :reportable, :factory => :user
|
||||
association :reported_user, :factory => :user
|
||||
end
|
||||
end
|
8
test/factories/reports.rb
Normal file
8
test/factories/reports.rb
Normal file
|
@ -0,0 +1,8 @@
|
|||
FactoryBot.define do
|
||||
factory :report do
|
||||
sequence(:details) { |n| "Report details #{n}" }
|
||||
category "other"
|
||||
issue
|
||||
user
|
||||
end
|
||||
end
|
7
test/models/issue_comment_test.rb
Normal file
7
test/models/issue_comment_test.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
require "test_helper"
|
||||
|
||||
class IssueCommentTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
88
test/models/issue_test.rb
Normal file
88
test/models/issue_test.rb
Normal file
|
@ -0,0 +1,88 @@
|
|||
require "test_helper"
|
||||
|
||||
class IssueTest < ActiveSupport::TestCase
|
||||
def test_assigned_role
|
||||
issue = create(:issue)
|
||||
|
||||
assert issue.valid?
|
||||
issue.assigned_role = "bogus"
|
||||
assert_not issue.valid?
|
||||
end
|
||||
|
||||
def test_reported_user
|
||||
create(:language, :code => "en")
|
||||
user = create(:user)
|
||||
note = create(:note_comment, :author => create(:user)).note
|
||||
anonymous_note = create(:note_comment, :author => nil).note
|
||||
diary_entry = create(:diary_entry)
|
||||
diary_comment = create(:diary_comment, :diary_entry => diary_entry)
|
||||
|
||||
issue = Issue.new(:reportable => user)
|
||||
issue.save!
|
||||
assert_equal issue.reported_user, user
|
||||
|
||||
issue = Issue.new(:reportable => note)
|
||||
issue.save!
|
||||
assert_equal issue.reported_user, note.author
|
||||
|
||||
issue = Issue.new(:reportable => anonymous_note)
|
||||
issue.save!
|
||||
assert_nil issue.reported_user
|
||||
|
||||
issue = Issue.new(:reportable => diary_entry)
|
||||
issue.save!
|
||||
assert_equal issue.reported_user, diary_entry.user
|
||||
|
||||
issue = Issue.new(:reportable => diary_comment)
|
||||
issue.save!
|
||||
assert_equal issue.reported_user, diary_comment.user
|
||||
end
|
||||
|
||||
def test_default_assigned_role
|
||||
create(:language, :code => "en")
|
||||
user = create(:user)
|
||||
note = create(:note_with_comments)
|
||||
diary_entry = create(:diary_entry)
|
||||
diary_comment = create(:diary_comment, :diary_entry => diary_entry)
|
||||
|
||||
issue = Issue.new(:reportable => user)
|
||||
issue.save!
|
||||
assert_equal "administrator", issue.assigned_role
|
||||
|
||||
issue = Issue.new(:reportable => note)
|
||||
issue.save!
|
||||
assert_equal "moderator", issue.assigned_role
|
||||
|
||||
issue = Issue.new(:reportable => diary_entry)
|
||||
issue.save!
|
||||
assert_equal "administrator", issue.assigned_role
|
||||
|
||||
issue = Issue.new(:reportable => diary_comment)
|
||||
issue.save!
|
||||
assert_equal "administrator", issue.assigned_role
|
||||
end
|
||||
|
||||
def test_no_default_explicit_role
|
||||
create(:language, :code => "en")
|
||||
user = create(:user)
|
||||
note = create(:note_with_comments)
|
||||
diary_entry = create(:diary_entry)
|
||||
diary_comment = create(:diary_comment, :diary_entry => diary_entry)
|
||||
|
||||
issue = Issue.new(:reportable => user, :assigned_role => "moderator")
|
||||
issue.save!
|
||||
assert_equal "moderator", issue.reload.assigned_role
|
||||
|
||||
issue = Issue.new(:reportable => note, :assigned_role => "administrator")
|
||||
issue.save!
|
||||
assert_equal "administrator", issue.reload.assigned_role
|
||||
|
||||
issue = Issue.new(:reportable => diary_entry, :assigned_role => "moderator")
|
||||
issue.save!
|
||||
assert_equal "moderator", issue.reload.assigned_role
|
||||
|
||||
issue = Issue.new(:reportable => diary_comment, :assigned_role => "moderator")
|
||||
issue.save!
|
||||
assert_equal "moderator", issue.reload.assigned_role
|
||||
end
|
||||
end
|
35
test/models/report_test.rb
Normal file
35
test/models/report_test.rb
Normal file
|
@ -0,0 +1,35 @@
|
|||
require "test_helper"
|
||||
|
||||
class ReportTest < ActiveSupport::TestCase
|
||||
def test_issue_required
|
||||
report = create(:report)
|
||||
|
||||
assert report.valid?
|
||||
report.issue = nil
|
||||
assert_not report.valid?
|
||||
end
|
||||
|
||||
def test_user_required
|
||||
report = create(:report)
|
||||
|
||||
assert report.valid?
|
||||
report.user = nil
|
||||
assert_not report.valid?
|
||||
end
|
||||
|
||||
def test_details_required
|
||||
report = create(:report)
|
||||
|
||||
assert report.valid?
|
||||
report.details = ""
|
||||
assert_not report.valid?
|
||||
end
|
||||
|
||||
def test_category_required
|
||||
report = create(:report)
|
||||
|
||||
assert report.valid?
|
||||
report.category = ""
|
||||
assert_not report.valid?
|
||||
end
|
||||
end
|
119
test/system/issues_test.rb
Normal file
119
test/system/issues_test.rb
Normal file
|
@ -0,0 +1,119 @@
|
|||
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("user.login.title"))
|
||||
end
|
||||
|
||||
def test_view_issues_normal_user
|
||||
sign_in_as(create(:user))
|
||||
|
||||
visit issues_path
|
||||
assert page.has_content?(I18n.t("application.require_moderator_or_admin.not_a_moderator_or_admin"))
|
||||
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)
|
||||
|
||||
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 "Submit"
|
||||
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 "Submit"
|
||||
|
||||
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
|
36
test/system/report_diary_comment_test.rb
Normal file
36
test/system/report_diary_comment_test.rb
Normal file
|
@ -0,0 +1,36 @@
|
|||
require "application_system_test_case"
|
||||
|
||||
class ReportDiaryCommentTest < ApplicationSystemTestCase
|
||||
def setup
|
||||
create(:language, :code => "en")
|
||||
@diary_entry = create(:diary_entry)
|
||||
@comment = create(:diary_comment, :diary_entry => @diary_entry)
|
||||
end
|
||||
|
||||
def test_no_link_when_not_logged_in
|
||||
visit diary_entry_path(@diary_entry.user.display_name, @diary_entry)
|
||||
assert page.has_content?(@comment.body)
|
||||
|
||||
assert_not page.has_content?(I18n.t("diary_entry.diary_comment.report"))
|
||||
end
|
||||
|
||||
def test_it_works
|
||||
sign_in_as(create(:user))
|
||||
visit diary_entry_path(@diary_entry.user.display_name, @diary_entry)
|
||||
assert page.has_content? @diary_entry.title
|
||||
|
||||
click_on I18n.t("diary_entry.diary_comment.report")
|
||||
assert page.has_content? "Report"
|
||||
assert page.has_content? I18n.t("reports.new.disclaimer.intro")
|
||||
|
||||
choose I18n.t("reports.new.categories.diary_comment.spam")
|
||||
fill_in "report_details", :with => "This comment is spam"
|
||||
assert_difference "Issue.count", 1 do
|
||||
click_on "Create Report"
|
||||
end
|
||||
|
||||
assert page.has_content? "Your report has been registered sucessfully"
|
||||
|
||||
assert_equal @comment, Issue.last.reportable
|
||||
end
|
||||
end
|
64
test/system/report_diary_entry_test.rb
Normal file
64
test/system/report_diary_entry_test.rb
Normal file
|
@ -0,0 +1,64 @@
|
|||
require "application_system_test_case"
|
||||
|
||||
class ReportDiaryEntryTest < ApplicationSystemTestCase
|
||||
def setup
|
||||
create(:language, :code => "en")
|
||||
@diary_entry = create(:diary_entry)
|
||||
end
|
||||
|
||||
def test_no_link_when_not_logged_in
|
||||
visit diary_entry_path(@diary_entry.user.display_name, @diary_entry)
|
||||
assert page.has_content?(@diary_entry.title)
|
||||
|
||||
assert_not page.has_content?(I18n.t("diary_entry.diary_entry.report"))
|
||||
end
|
||||
|
||||
def test_it_works
|
||||
sign_in_as(create(:user))
|
||||
visit diary_entry_path(@diary_entry.user.display_name, @diary_entry)
|
||||
assert page.has_content? @diary_entry.title
|
||||
|
||||
click_on I18n.t("diary_entry.diary_entry.report")
|
||||
assert page.has_content? "Report"
|
||||
assert page.has_content? I18n.t("reports.new.disclaimer.intro")
|
||||
|
||||
choose I18n.t("reports.new.categories.diary_entry.spam")
|
||||
fill_in "report_details", :with => "This is advertising"
|
||||
assert_difference "Issue.count", 1 do
|
||||
click_on "Create Report"
|
||||
end
|
||||
|
||||
assert page.has_content? "Your report has been registered sucessfully"
|
||||
|
||||
assert_equal @diary_entry, Issue.last.reportable
|
||||
end
|
||||
|
||||
def test_it_reopens_issue
|
||||
issue = create(:issue, :reportable => @diary_entry)
|
||||
issue.resolve!
|
||||
|
||||
sign_in_as(create(:user))
|
||||
visit diary_entry_path(@diary_entry.user.display_name, @diary_entry)
|
||||
assert page.has_content? @diary_entry.title
|
||||
|
||||
click_on I18n.t("diary_entry.diary_entry.report")
|
||||
assert page.has_content? "Report"
|
||||
assert page.has_content? I18n.t("reports.new.disclaimer.intro")
|
||||
|
||||
choose I18n.t("reports.new.categories.diary_entry.spam")
|
||||
fill_in "report_details", :with => "This is advertising"
|
||||
assert_no_difference "Issue.count" do
|
||||
click_on "Create Report"
|
||||
end
|
||||
|
||||
issue.reload
|
||||
assert_not issue.resolved?
|
||||
assert issue.open?
|
||||
end
|
||||
|
||||
def test_missing_report_params
|
||||
sign_in_as(create(:user))
|
||||
visit new_report_path
|
||||
assert page.has_content? I18n.t("reports.new.missing_params")
|
||||
end
|
||||
end
|
51
test/system/report_note_test.rb
Normal file
51
test/system/report_note_test.rb
Normal file
|
@ -0,0 +1,51 @@
|
|||
require "application_system_test_case"
|
||||
|
||||
class ReportNoteTest < ApplicationSystemTestCase
|
||||
def test_no_link_when_not_logged_in
|
||||
note = create(:note_with_comments)
|
||||
visit browse_note_path(note)
|
||||
assert page.has_content?(note.comments.first.body)
|
||||
|
||||
assert_not page.has_content?(I18n.t("browse.note.report"))
|
||||
end
|
||||
|
||||
def test_can_report_anonymous_notes
|
||||
note = create(:note_with_comments)
|
||||
sign_in_as(create(:user))
|
||||
visit browse_note_path(note)
|
||||
|
||||
click_on I18n.t("browse.note.report")
|
||||
assert page.has_content? "Report"
|
||||
assert page.has_content? I18n.t("reports.new.disclaimer.intro")
|
||||
|
||||
choose I18n.t("reports.new.categories.note.spam")
|
||||
fill_in "report_details", :with => "This is spam"
|
||||
assert_difference "Issue.count", 1 do
|
||||
click_on "Create Report"
|
||||
end
|
||||
|
||||
assert page.has_content? "Your report has been registered sucessfully"
|
||||
|
||||
assert_equal note, Issue.last.reportable
|
||||
end
|
||||
|
||||
def test_can_report_notes_with_author
|
||||
note = create(:note_comment, :author => create(:user)).note
|
||||
sign_in_as(create(:user))
|
||||
visit browse_note_path(note)
|
||||
|
||||
click_on I18n.t("browse.note.report")
|
||||
assert page.has_content? "Report"
|
||||
assert page.has_content? I18n.t("reports.new.disclaimer.intro")
|
||||
|
||||
choose I18n.t("reports.new.categories.note.spam")
|
||||
fill_in "report_details", :with => "This is spam"
|
||||
assert_difference "Issue.count", 1 do
|
||||
click_on "Create Report"
|
||||
end
|
||||
|
||||
assert page.has_content? "Your report has been registered sucessfully"
|
||||
|
||||
assert_equal note, Issue.last.reportable
|
||||
end
|
||||
end
|
31
test/system/report_user_test.rb
Normal file
31
test/system/report_user_test.rb
Normal file
|
@ -0,0 +1,31 @@
|
|||
require "application_system_test_case"
|
||||
|
||||
class ReportUserTest < ApplicationSystemTestCase
|
||||
def test_no_link_when_not_logged_in
|
||||
note = create(:note_with_comments)
|
||||
visit browse_note_path(note)
|
||||
assert page.has_content?(note.comments.first.body)
|
||||
|
||||
assert_not page.has_content?(I18n.t("user.view.report"))
|
||||
end
|
||||
|
||||
def test_can_report_user
|
||||
user = create(:user)
|
||||
sign_in_as(create(:user))
|
||||
visit user_path(user.display_name)
|
||||
|
||||
click_on I18n.t("user.view.report")
|
||||
assert page.has_content? "Report"
|
||||
assert page.has_content? I18n.t("reports.new.disclaimer.intro")
|
||||
|
||||
choose I18n.t("reports.new.categories.user.vandal")
|
||||
fill_in "report_details", :with => "This user is a vandal"
|
||||
assert_difference "Issue.count", 1 do
|
||||
click_on "Create Report"
|
||||
end
|
||||
|
||||
assert page.has_content? "Your report has been registered sucessfully"
|
||||
|
||||
assert_equal user, Issue.last.reportable
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue