Chris@119
|
1 require File.expand_path('../../test_helper', __FILE__)
|
Chris@0
|
2 require 'issue_statuses_controller'
|
Chris@0
|
3
|
Chris@0
|
4 # Re-raise errors caught by the controller.
|
Chris@0
|
5 class IssueStatusesController; def rescue_action(e) raise e end; end
|
Chris@0
|
6
|
Chris@0
|
7
|
Chris@0
|
8 class IssueStatusesControllerTest < ActionController::TestCase
|
Chris@1115
|
9 fixtures :issue_statuses, :issues, :users
|
Chris@909
|
10
|
Chris@0
|
11 def setup
|
Chris@0
|
12 @controller = IssueStatusesController.new
|
Chris@0
|
13 @request = ActionController::TestRequest.new
|
Chris@0
|
14 @response = ActionController::TestResponse.new
|
Chris@0
|
15 User.current = nil
|
Chris@0
|
16 @request.session[:user_id] = 1 # admin
|
Chris@0
|
17 end
|
Chris@909
|
18
|
Chris@0
|
19 def test_index
|
Chris@0
|
20 get :index
|
Chris@0
|
21 assert_response :success
|
Chris@0
|
22 assert_template 'index'
|
Chris@0
|
23 end
|
Chris@0
|
24
|
Chris@909
|
25 def test_index_by_anonymous_should_redirect_to_login_form
|
Chris@909
|
26 @request.session[:user_id] = nil
|
Chris@909
|
27 get :index
|
Chris@909
|
28 assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Fissue_statuses'
|
Chris@909
|
29 end
|
Chris@909
|
30
|
Chris@909
|
31 def test_index_by_user_should_respond_with_406
|
Chris@909
|
32 @request.session[:user_id] = 2
|
Chris@909
|
33 get :index
|
Chris@909
|
34 assert_response 406
|
Chris@909
|
35 end
|
Chris@909
|
36
|
Chris@0
|
37 def test_new
|
Chris@0
|
38 get :new
|
Chris@0
|
39 assert_response :success
|
Chris@0
|
40 assert_template 'new'
|
Chris@0
|
41 end
|
Chris@909
|
42
|
Chris@0
|
43 def test_create
|
Chris@0
|
44 assert_difference 'IssueStatus.count' do
|
Chris@0
|
45 post :create, :issue_status => {:name => 'New status'}
|
Chris@0
|
46 end
|
Chris@0
|
47 assert_redirected_to :action => 'index'
|
Chris@0
|
48 status = IssueStatus.find(:first, :order => 'id DESC')
|
Chris@0
|
49 assert_equal 'New status', status.name
|
Chris@0
|
50 end
|
Chris@909
|
51
|
Chris@1115
|
52 def test_create_with_failure
|
Chris@1115
|
53 post :create, :issue_status => {:name => ''}
|
Chris@1115
|
54 assert_response :success
|
Chris@1115
|
55 assert_template 'new'
|
Chris@1115
|
56 assert_error_tag :content => /name can't be blank/i
|
Chris@1115
|
57 end
|
Chris@1115
|
58
|
Chris@0
|
59 def test_edit
|
Chris@0
|
60 get :edit, :id => '3'
|
Chris@0
|
61 assert_response :success
|
Chris@0
|
62 assert_template 'edit'
|
Chris@0
|
63 end
|
Chris@909
|
64
|
Chris@0
|
65 def test_update
|
Chris@909
|
66 put :update, :id => '3', :issue_status => {:name => 'Renamed status'}
|
Chris@0
|
67 assert_redirected_to :action => 'index'
|
Chris@0
|
68 status = IssueStatus.find(3)
|
Chris@0
|
69 assert_equal 'Renamed status', status.name
|
Chris@0
|
70 end
|
Chris@909
|
71
|
Chris@1115
|
72 def test_update_with_failure
|
Chris@1115
|
73 put :update, :id => '3', :issue_status => {:name => ''}
|
Chris@1115
|
74 assert_response :success
|
Chris@1115
|
75 assert_template 'edit'
|
Chris@1115
|
76 assert_error_tag :content => /name can't be blank/i
|
Chris@1115
|
77 end
|
Chris@1115
|
78
|
Chris@0
|
79 def test_destroy
|
Chris@0
|
80 Issue.delete_all("status_id = 1")
|
Chris@909
|
81
|
Chris@0
|
82 assert_difference 'IssueStatus.count', -1 do
|
Chris@909
|
83 delete :destroy, :id => '1'
|
Chris@0
|
84 end
|
Chris@0
|
85 assert_redirected_to :action => 'index'
|
Chris@0
|
86 assert_nil IssueStatus.find_by_id(1)
|
Chris@0
|
87 end
|
Chris@909
|
88
|
Chris@0
|
89 def test_destroy_should_block_if_status_in_use
|
Chris@0
|
90 assert_not_nil Issue.find_by_status_id(1)
|
Chris@909
|
91
|
Chris@0
|
92 assert_no_difference 'IssueStatus.count' do
|
Chris@909
|
93 delete :destroy, :id => '1'
|
Chris@0
|
94 end
|
Chris@0
|
95 assert_redirected_to :action => 'index'
|
Chris@0
|
96 assert_not_nil IssueStatus.find_by_id(1)
|
Chris@0
|
97 end
|
Chris@0
|
98
|
Chris@1115
|
99 def test_update_issue_done_ratio_with_issue_done_ratio_set_to_issue_field
|
Chris@1115
|
100 with_settings :issue_done_ratio => 'issue_field' do
|
Chris@1115
|
101 post :update_issue_done_ratio
|
Chris@1115
|
102 assert_match /not updated/, flash[:error].to_s
|
Chris@1115
|
103 assert_redirected_to '/issue_statuses'
|
Chris@0
|
104 end
|
Chris@0
|
105 end
|
Chris@909
|
106
|
Chris@1115
|
107 def test_update_issue_done_ratio_with_issue_done_ratio_set_to_issue_status
|
Chris@1115
|
108 with_settings :issue_done_ratio => 'issue_status' do
|
Chris@1115
|
109 post :update_issue_done_ratio
|
Chris@1115
|
110 assert_match /Issue done ratios updated/, flash[:notice].to_s
|
Chris@1115
|
111 assert_redirected_to '/issue_statuses'
|
Chris@1115
|
112 end
|
Chris@1115
|
113 end
|
Chris@0
|
114 end
|