]> git.openstreetmap.org Git - rails.git/blob - test/controllers/issues_controller_test.rb
ff99b0cdcef37af48b6ab54ae8e13698efbda296
[rails.git] / test / controllers / issues_controller_test.rb
1 require "test_helper"
2
3 class IssuesControllerTest < ActionController::TestCase
4   teardown do
5     # cleanup any emails set off by the test
6     ActionMailer::Base.deliveries.clear
7   end
8
9   def test_view_dashboard_without_auth
10     # Access issues_path without login
11     get :index
12     assert_response :redirect
13     assert_redirected_to login_path(:referer => issues_path)
14
15     # Access issues_path as normal user
16     session[:user] = create(:user).id
17     get :index
18     assert_response :redirect
19     assert_redirected_to root_path
20
21     # Access issues_path by admin
22     session[:user] = create(:administrator_user).id
23     get :index
24     assert_response :success
25
26     # Access issues_path by moderator
27     session[:user] = create(:moderator_user).id
28     get :index
29     assert_response :success
30   end
31
32   def test_change_status_by_normal_user
33     target_user = create(:user)
34     issue = create(:issue, :reportable => target_user, :reported_user => target_user)
35
36     # Login as normal user
37     session[:user] = create(:user).id
38
39     assert_equal 1, Issue.count
40
41     get :resolve, :params => { :id => issue.id }
42
43     assert_response :redirect
44     assert_redirected_to root_path
45   end
46
47   def test_change_status_by_admin
48     target_user = create(:user)
49     issue = create(:issue, :reportable => target_user, :reported_user => target_user)
50
51     # Login as administrator
52     session[:user] = create(:administrator_user).id
53
54     # Test 'Resolved'
55     get :resolve, :params => { :id => issue.id }
56     assert_equal true, Issue.find_by(:reportable_id => target_user.id, :reportable_type => "User").resolved?
57     assert_response :redirect
58
59     # Test 'Reopen'
60     get :reopen, :params => { :id => issue.id }
61     assert_equal true, Issue.find_by(:reportable_id => target_user.id, :reportable_type => "User").open?
62     assert_response :redirect
63
64     # Test 'Ignored'
65     get :ignore, :params => { :id => issue.id }
66     assert_equal true, Issue.find_by(:reportable_id => target_user, :reportable_type => "User").ignored?
67     assert_response :redirect
68   end
69 end