Get tests passing. Use factories instead of fixtures.
This commit is contained in:
parent
dbd88d893f
commit
6f375ef493
6 changed files with 88 additions and 151 deletions
|
@ -54,7 +54,7 @@ module IssuesHelper
|
|||
arrow = direction == "desc" ? ["25B2".hex].pack("U") : ["25BC".hex].pack("U")
|
||||
title += arrow
|
||||
end
|
||||
link_to title, params.merge(:sort => column, :direction => direction)
|
||||
# FIXME: link_to title, params.merge(:sort => column, :direction => direction)
|
||||
end
|
||||
|
||||
def report_type(report_class)
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
require "test_helper"
|
||||
|
||||
class IssuesControllerTest < ActionController::TestCase
|
||||
fixtures :users, :user_roles, :issues
|
||||
|
||||
teardown do
|
||||
# cleanup any emails set off by the test
|
||||
ActionMailer::Base.deliveries.clear
|
||||
|
@ -15,251 +13,232 @@ class IssuesControllerTest < ActionController::TestCase
|
|||
assert_redirected_to login_path(:referer => issues_path)
|
||||
|
||||
# Access issues_path as normal user
|
||||
session[:user] = users(:normal_user).id
|
||||
session[:user] = create(:user).id
|
||||
get :index
|
||||
assert_response :redirect
|
||||
assert_redirected_to root_path
|
||||
|
||||
# Access issues_path by admin
|
||||
session[:user] = users(:administrator_user).id
|
||||
session[:user] = create(:administrator_user).id
|
||||
get :index
|
||||
# this is redirected because there are no issues?!
|
||||
assert_response :redirect
|
||||
assert_redirected_to issues_path
|
||||
|
||||
# Access issues_path by moderator
|
||||
session[:user] = users(:moderator_user).id
|
||||
session[:user] = create(:moderator_user).id
|
||||
get :index
|
||||
# this is redirected because there are no issues?!
|
||||
assert_response :redirect
|
||||
assert_redirected_to issues_path
|
||||
|
||||
# clear session
|
||||
session.delete(:user)
|
||||
end
|
||||
|
||||
def test_new_issue_without_login
|
||||
# Test creation of a new issue and a new report without logging in
|
||||
get :new, :reportable_id => 1, :reportable_type => "User", :reported_user_id => 1
|
||||
get :new, :params => { :reportable_id => 1, :reportable_type => "User", :reported_user_id => 1 }
|
||||
assert_response :redirect
|
||||
assert_redirected_to login_path(:referer => new_issue_path(:reportable_id => 1, :reportable_type => "User", :reported_user_id => 1))
|
||||
end
|
||||
|
||||
def test_new_issue_after_login
|
||||
# Test creation of a new issue and a new report
|
||||
target_user = create(:user)
|
||||
|
||||
# Login
|
||||
session[:user] = users(:normal_user).id
|
||||
session[:user] = create(:user).id
|
||||
|
||||
assert_equal Issue.count, 0
|
||||
|
||||
# Create an Issue and a report
|
||||
get :new, :reportable_id => 1, :reportable_type => "User", :reported_user_id => 2
|
||||
get :new, :params => { :reportable_id => target_user.id, :reportable_type => "User", :reported_user_id => target_user.id }
|
||||
assert_response :success
|
||||
assert_difference "Issue.count", 1 do
|
||||
details = "Details of a report"
|
||||
post :create,
|
||||
:report => { :details => details },
|
||||
:report_type => "[OFFENSIVE]",
|
||||
:issue => { :reportable_id => 1, :reportable_type => "User", :reported_user_id => 2 }
|
||||
:params => {
|
||||
:report => { :details => details },
|
||||
:report_type => "[OFFENSIVE]",
|
||||
:issue => { :reportable_id => target_user.id, :reportable_type => "User", :reported_user_id => target_user.id }
|
||||
}
|
||||
end
|
||||
assert_equal Issue.count, 1
|
||||
assert_response :redirect
|
||||
assert_redirected_to root_path
|
||||
|
||||
# clear session
|
||||
session.delete(:user)
|
||||
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] = users(:normal_user).id
|
||||
session[:user] = create(:user).id
|
||||
|
||||
assert_equal Issue.count, 0
|
||||
|
||||
# Create an Issue and a report
|
||||
get :new, :reportable_id => 1, :reportable_type => "User", :reported_user_id => 2
|
||||
get :new, :params => { :reportable_id => target_user.id, :reportable_type => "User", :reported_user_id => target_user.id }
|
||||
assert_response :success
|
||||
assert_difference "Issue.count", 1 do
|
||||
details = "Details of a report"
|
||||
post :create,
|
||||
:report => { :details => details },
|
||||
:report_type => "[OFFENSIVE]",
|
||||
:issue => { :reportable_id => 1, :reportable_type => "User", :reported_user_id => 2 }
|
||||
:params => {
|
||||
:report => { :details => details },
|
||||
:report_type => "[OFFENSIVE]",
|
||||
:issue => { :reportable_id => target_user.id, :reportable_type => "User", :reported_user_id => target_user.id }
|
||||
}
|
||||
end
|
||||
assert_equal Issue.count, 1
|
||||
assert_response :redirect
|
||||
assert_redirected_to root_path
|
||||
|
||||
get :new, :reportable_id => 1, :reportable_type => "User", :reported_user_id => 2
|
||||
get :new, :params => { :reportable_id => target_user.id, :reportable_type => "User", :reported_user_id => target_user.id }
|
||||
assert_response :success
|
||||
|
||||
# Report without report_type
|
||||
assert_no_difference "Issue.count" do
|
||||
details = "Details of another report under the same issue"
|
||||
post :create,
|
||||
:report => { :details => details },
|
||||
:issue => { :reportable_id => 1, :reportable_type => "User", :reported_user_id => 2 }
|
||||
:params => {
|
||||
:report => { :details => details },
|
||||
:issue => { :reportable_id => target_user.id, :reportable_type => "User", :reported_user_id => target_user.id }
|
||||
}
|
||||
end
|
||||
assert_response :redirect
|
||||
assert_equal Issue.find_by_reportable_id_and_reportable_type(1, "User").reports.count, 1
|
||||
assert_equal Issue.find_by_reportable_id_and_reportable_type(target_user.id, "User").reports.count, 1
|
||||
|
||||
# Report without details
|
||||
assert_no_difference "Issue.count" do
|
||||
post :create,
|
||||
:report_type => "[OFFENSIVE]",
|
||||
:issue => { :reportable_id => 1, :reportable_type => "User", :reported_user_id => 2 }
|
||||
:params => {
|
||||
:report_type => "[OFFENSIVE]",
|
||||
:issue => { :reportable_id => 1, :reportable_type => "User", :reported_user_id => 2 }
|
||||
}
|
||||
end
|
||||
assert_response :redirect
|
||||
assert_equal Issue.find_by_reportable_id_and_reportable_type(1, "User").reports.count, 1
|
||||
|
||||
# clear session
|
||||
session.delete(:user)
|
||||
assert_equal Issue.find_by_reportable_id_and_reportable_type(target_user.id, "User").reports.count, 1
|
||||
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] = users(:normal_user).id
|
||||
session[:user] = create(:user).id
|
||||
|
||||
assert_equal Issue.count, 0
|
||||
|
||||
# Create an Issue and a report
|
||||
get :new, :reportable_id => 1, :reportable_type => "User", :reported_user_id => 2
|
||||
get :new, :params => { :reportable_id => target_user.id, :reportable_type => "User", :reported_user_id => target_user.id }
|
||||
assert_response :success
|
||||
assert_difference "Issue.count", 1 do
|
||||
details = "Details of a report"
|
||||
post :create,
|
||||
:report => { :details => details },
|
||||
:report_type => "[OFFENSIVE]",
|
||||
:issue => { :reportable_id => 1, :reportable_type => "User", :reported_user_id => 2 }
|
||||
:params => {
|
||||
:report => { :details => details },
|
||||
:report_type => "[OFFENSIVE]",
|
||||
:issue => { :reportable_id => target_user.id, :reportable_type => "User", :reported_user_id => target_user.id }
|
||||
}
|
||||
end
|
||||
assert_equal Issue.count, 1
|
||||
assert_response :redirect
|
||||
assert_redirected_to root_path
|
||||
|
||||
# Create a report for an existing Issue
|
||||
get :new, :reportable_id => 1, :reportable_type => "User", :reported_user_id => 2
|
||||
get :new, :params => { :reportable_id => target_user.id, :reportable_type => "User", :reported_user_id => target_user.id }
|
||||
assert_response :success
|
||||
assert_no_difference "Issue.count" do
|
||||
details = "Details of another report under the same issue"
|
||||
post :create,
|
||||
:report => { :details => details },
|
||||
:report_type => "[OFFENSIVE]",
|
||||
:issue => { :reportable_id => 1, :reportable_type => "User", :reported_user_id => 2 }
|
||||
:params => {
|
||||
:report => { :details => details },
|
||||
:report_type => "[OFFENSIVE]",
|
||||
:issue => { :reportable_id => target_user.id, :reportable_type => "User", :reported_user_id => target_user.id }
|
||||
}
|
||||
end
|
||||
assert_response :redirect
|
||||
report_count = Issue.find_by_reportable_id_and_reportable_type(1, "User").reports.count
|
||||
report_count = Issue.find_by_reportable_id_and_reportable_type(target_user.id, "User").reports.count
|
||||
assert_equal report_count, 2
|
||||
|
||||
# clear session
|
||||
session.delete(:user)
|
||||
end
|
||||
|
||||
def test_change_status_by_normal_user
|
||||
# Login as normal user
|
||||
session[:user] = users(:normal_user).id
|
||||
target_user = create(:user)
|
||||
issue = create(:issue, :reportable => target_user, :reported_user_id => target_user.id)
|
||||
|
||||
# Login as normal user
|
||||
session[:user] = create(:user).id
|
||||
|
||||
# Create Issue
|
||||
test_new_issue_after_login
|
||||
assert_equal Issue.count, 1
|
||||
|
||||
get :resolve, :id => Issue.find_by_reportable_id_and_reportable_type(1, "User").id
|
||||
get :resolve, :params => { :id => issue.id }
|
||||
|
||||
assert_response :redirect
|
||||
assert_redirected_to root_path
|
||||
|
||||
# clear session
|
||||
session.delete(:user)
|
||||
end
|
||||
|
||||
def test_change_status_by_admin
|
||||
# Login as normal user
|
||||
session[:user] = users(:normal_user).id
|
||||
|
||||
# Create Issue
|
||||
test_new_issue_after_login
|
||||
assert_equal Issue.count, 1
|
||||
assert_response :redirect
|
||||
target_user = create(:user)
|
||||
issue = create(:issue, :reportable => target_user, :reported_user_id => target_user.id)
|
||||
|
||||
# Login as administrator
|
||||
session[:user] = users(:administrator_user).id
|
||||
session[:user] = create(:administrator_user).id
|
||||
|
||||
# Test 'Resolved'
|
||||
get :resolve, :id => Issue.find_by_reportable_id_and_reportable_type(1, "User").id
|
||||
assert_equal Issue.find_by_reportable_id_and_reportable_type(1, "User").resolved?, true
|
||||
get :resolve, :params => { :id => issue.id }
|
||||
assert_equal Issue.find_by_reportable_id_and_reportable_type(target_user.id, "User").resolved?, true
|
||||
assert_response :redirect
|
||||
|
||||
# Test 'Reopen'
|
||||
get :reopen, :id => Issue.find_by_reportable_id_and_reportable_type(1, "User").id
|
||||
assert_equal Issue.find_by_reportable_id_and_reportable_type(1, "User").open?, true
|
||||
get :reopen, :params => { :id => issue.id }
|
||||
assert_equal Issue.find_by_reportable_id_and_reportable_type(target_user.id, "User").open?, true
|
||||
assert_response :redirect
|
||||
|
||||
# Test 'Ignored'
|
||||
get :ignore, :id => Issue.find_by_reportable_id_and_reportable_type(1, "User").id
|
||||
assert_equal Issue.find_by_reportable_id_and_reportable_type(1, "User").ignored?, true
|
||||
get :ignore, :params => { :id => issue.id }
|
||||
assert_equal Issue.find_by_reportable_id_and_reportable_type(target_user, "User").ignored?, true
|
||||
assert_response :redirect
|
||||
|
||||
# clear session
|
||||
session.delete(:user)
|
||||
end
|
||||
|
||||
def test_search_issues
|
||||
good_user = create(:user)
|
||||
bad_user = create(:user)
|
||||
create(:issue, :reportable => bad_user, :reported_user_id => bad_user.id, :issue_type => "administrator")
|
||||
# Login as administrator
|
||||
session[:user] = users(:administrator_user).id
|
||||
session[:user] = create(:administrator_user).id
|
||||
|
||||
# No issues against the user
|
||||
get :index, :search_by_user => "test1"
|
||||
get :index, :params => { :search_by_user => good_user.display_name }
|
||||
assert_response :redirect
|
||||
assert_redirected_to issues_path
|
||||
|
||||
# User doesn't exist
|
||||
get :index, :search_by_user => "test1000"
|
||||
get :index, :params => { :search_by_user => "test1000" }
|
||||
assert_response :redirect
|
||||
assert_redirected_to issues_path
|
||||
|
||||
# Create Issue against user_id:2
|
||||
test_new_issue_after_login
|
||||
assert_equal Issue.count, 1
|
||||
assert_equal Issue.first.reported_user_id, 2
|
||||
|
||||
session[:user] = users(:administrator_user).id
|
||||
|
||||
# Find Issue against user_id:2
|
||||
get :index, :search_by_user => "test2"
|
||||
# Find Issue against bad_user
|
||||
get :index, :params => { :search_by_user => bad_user.display_name }
|
||||
assert_response :success
|
||||
|
||||
# clear session
|
||||
session.delete(:user)
|
||||
end
|
||||
|
||||
def test_comment_by_normal_user
|
||||
# Create Issue
|
||||
test_new_issue_after_login
|
||||
assert_equal Issue.count, 1
|
||||
issue = create(:issue)
|
||||
|
||||
get :comment, :id => 1
|
||||
# Login as normal user
|
||||
session[:user] = create(:user).id
|
||||
|
||||
get :comment, :params => { :id => issue.id }
|
||||
assert_response :redirect
|
||||
assert_redirected_to root_path
|
||||
end
|
||||
|
||||
def test_comment
|
||||
# Create Issue
|
||||
test_new_issue_after_login
|
||||
assert_equal Issue.count, 1
|
||||
@issue = Issue.all.first
|
||||
issue = create(:issue)
|
||||
|
||||
# Login as administrator
|
||||
session[:user] = users(:administrator_user).id
|
||||
session[:user] = create(:administrator_user).id
|
||||
|
||||
get :comment, :id => @issue.id, :issue_comment => { :body => "test comment" }
|
||||
get :comment, :params => { :id => issue.id, :issue_comment => { :body => "test comment" } }
|
||||
assert_response :redirect
|
||||
assert_redirected_to @issue
|
||||
|
||||
# clear session
|
||||
session.delete(:user)
|
||||
assert_redirected_to issue
|
||||
end
|
||||
end
|
||||
|
|
9
test/factories/issues.rb
Normal file
9
test/factories/issues.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
FactoryGirl.define do
|
||||
factory :issue do
|
||||
# Default to reporting users
|
||||
association :reportable, :factory => :user
|
||||
|
||||
# reported_user_id
|
||||
association :user, :factory => :user
|
||||
end
|
||||
end
|
13
test/fixtures/issue_comments.yml
vendored
13
test/fixtures/issue_comments.yml
vendored
|
@ -1,13 +0,0 @@
|
|||
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
one:
|
||||
issue_id: 1
|
||||
user_id: 1
|
||||
body: MyText
|
||||
created_at: 2015-05-26 18:30:32
|
||||
|
||||
two:
|
||||
issue_id: 1
|
||||
user_id: 1
|
||||
body: MyText
|
||||
created_at: 2015-05-26 18:30:32
|
23
test/fixtures/issues.yml
vendored
23
test/fixtures/issues.yml
vendored
|
@ -1,23 +0,0 @@
|
|||
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
# one:
|
||||
# reportable_type: User
|
||||
# reportable_id: 1
|
||||
# reported_user_id: 1
|
||||
# status: 1
|
||||
# issue_type: administrator
|
||||
# resolved_at: 2015-05-16 13:06:16
|
||||
# resolved_by: 1
|
||||
# created_at: 2015-05-16 13:06:16
|
||||
# updated_at: 2015-05-16 13:06:16
|
||||
|
||||
# two:
|
||||
# reportable_type: User
|
||||
# reportable_id: 1
|
||||
# reported_user_id: 1
|
||||
# status: 1
|
||||
# issue_type: moderator
|
||||
# resolved_at: 2015-05-16 13:06:16
|
||||
# resolved_by: 1
|
||||
# created_at: 2015-05-16 13:06:16
|
||||
# updated_at: 2015-05-16 13:06:16
|
15
test/fixtures/reports.yml
vendored
15
test/fixtures/reports.yml
vendored
|
@ -1,15 +0,0 @@
|
|||
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
one:
|
||||
issue_id: 1
|
||||
user_id: 1
|
||||
details: MyText
|
||||
created_at: 2015-05-16 13:26:20
|
||||
updated_at: 2015-05-16 13:26:20
|
||||
|
||||
two:
|
||||
issue_id: 1
|
||||
user_id: 1
|
||||
details: MyText
|
||||
created_at: 2015-05-16 13:26:20
|
||||
updated_at: 2015-05-16 13:26:20
|
Loading…
Add table
Add a link
Reference in a new issue