Mercurial > hg > soundsoftware-site
comparison test/functional/context_menus_controller_test.rb @ 1115:433d4f72a19b redmine-2.2
Update to Redmine SVN revision 11137 on 2.2-stable branch
author | Chris Cannam |
---|---|
date | Mon, 07 Jan 2013 12:01:42 +0000 |
parents | cbb26bc654de |
children | bb32da3bea34 3e4c3460b6ca |
comparison
equal
deleted
inserted
replaced
929:5f33065ddc4b | 1115:433d4f72a19b |
---|---|
5 :trackers, | 5 :trackers, |
6 :projects_trackers, | 6 :projects_trackers, |
7 :roles, | 7 :roles, |
8 :member_roles, | 8 :member_roles, |
9 :members, | 9 :members, |
10 :auth_sources, | |
11 :enabled_modules, | 10 :enabled_modules, |
12 :workflows, | 11 :workflows, |
13 :journals, :journal_details, | 12 :journals, :journal_details, |
14 :versions, | 13 :versions, |
15 :issues, :issue_statuses, :issue_categories, | 14 :issues, :issue_statuses, :issue_categories, |
16 :users, | 15 :users, |
17 :enumerations | 16 :enumerations, |
17 :time_entries | |
18 | 18 |
19 def test_context_menu_one_issue | 19 def test_context_menu_one_issue |
20 @request.session[:user_id] = 2 | 20 @request.session[:user_id] = 2 |
21 get :issues, :ids => [1] | 21 get :issues, :ids => [1] |
22 assert_response :success | 22 assert_response :success |
23 assert_template 'context_menu' | 23 assert_template 'context_menu' |
24 assert_tag :tag => 'a', :content => 'Edit', | 24 assert_tag :tag => 'a', :content => 'Edit', |
25 :attributes => { :href => '/issues/1/edit', | 25 :attributes => { :href => '/issues/1/edit', |
26 :class => 'icon-edit' } | 26 :class => 'icon-edit' } |
27 assert_tag :tag => 'a', :content => 'Closed', | 27 assert_tag :tag => 'a', :content => 'Closed', |
28 :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&issue%5Bstatus_id%5D=5', | 28 :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&issue%5Bstatus_id%5D=5', |
29 :class => '' } | 29 :class => '' } |
30 assert_tag :tag => 'a', :content => 'Immediate', | 30 assert_tag :tag => 'a', :content => 'Immediate', |
31 :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&issue%5Bpriority_id%5D=8', | 31 :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&issue%5Bpriority_id%5D=8', |
32 :class => '' } | 32 :class => '' } |
33 assert_no_tag :tag => 'a', :content => 'Inactive Priority' | 33 assert_no_tag :tag => 'a', :content => 'Inactive Priority' |
34 # Versions | 34 # Versions |
35 assert_tag :tag => 'a', :content => '2.0', | 35 assert_tag :tag => 'a', :content => '2.0', |
36 :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&issue%5Bfixed_version_id%5D=3', | 36 :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&issue%5Bfixed_version_id%5D=3', |
37 :class => '' } | 37 :class => '' } |
38 assert_tag :tag => 'a', :content => 'eCookbook Subproject 1 - 2.0', | 38 assert_tag :tag => 'a', :content => 'eCookbook Subproject 1 - 2.0', |
39 :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&issue%5Bfixed_version_id%5D=4', | 39 :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&issue%5Bfixed_version_id%5D=4', |
40 :class => '' } | 40 :class => '' } |
41 | 41 |
42 assert_tag :tag => 'a', :content => 'Dave Lopper', | 42 assert_tag :tag => 'a', :content => 'Dave Lopper', |
43 :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&issue%5Bassigned_to_id%5D=3', | 43 :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&issue%5Bassigned_to_id%5D=3', |
44 :class => '' } | 44 :class => '' } |
45 assert_tag :tag => 'a', :content => 'Duplicate', | 45 assert_tag :tag => 'a', :content => 'Copy', |
46 :attributes => { :href => '/projects/ecookbook/issues/1/copy', | 46 :attributes => { :href => '/projects/ecookbook/issues/1/copy', |
47 :class => 'icon-duplicate' } | |
48 assert_tag :tag => 'a', :content => 'Copy', | |
49 :attributes => { :href => '/issues/move/new?copy_options%5Bcopy%5D=t&ids%5B%5D=1', | |
50 :class => 'icon-copy' } | 47 :class => 'icon-copy' } |
51 assert_tag :tag => 'a', :content => 'Move', | 48 assert_no_tag :tag => 'a', :content => 'Move' |
52 :attributes => { :href => '/issues/move/new?ids%5B%5D=1', | 49 assert_tag :tag => 'a', :content => 'Delete', |
53 :class => 'icon-move' } | 50 :attributes => { :href => '/issues?ids%5B%5D=1', |
54 assert_tag :tag => 'a', :content => 'Delete', | |
55 :attributes => { :href => '/issues/destroy?ids%5B%5D=1', | |
56 :class => 'icon-del' } | 51 :class => 'icon-del' } |
57 end | 52 end |
58 | 53 |
59 def test_context_menu_one_issue_by_anonymous | 54 def test_context_menu_one_issue_by_anonymous |
60 get :issues, :ids => [1] | 55 get :issues, :ids => [1] |
71 assert_response :success | 66 assert_response :success |
72 assert_template 'context_menu' | 67 assert_template 'context_menu' |
73 assert_not_nil assigns(:issues) | 68 assert_not_nil assigns(:issues) |
74 assert_equal [1, 2], assigns(:issues).map(&:id).sort | 69 assert_equal [1, 2], assigns(:issues).map(&:id).sort |
75 | 70 |
76 ids = assigns(:issues).map(&:id).map {|i| "ids%5B%5D=#{i}"}.join('&') | 71 ids = assigns(:issues).map(&:id).sort.map {|i| "ids%5B%5D=#{i}"}.join('&') |
77 assert_tag :tag => 'a', :content => 'Edit', | 72 assert_tag :tag => 'a', :content => 'Edit', |
78 :attributes => { :href => "/issues/bulk_edit?#{ids}", | 73 :attributes => { :href => "/issues/bulk_edit?#{ids}", |
79 :class => 'icon-edit' } | 74 :class => 'icon-edit' } |
80 assert_tag :tag => 'a', :content => 'Closed', | 75 assert_tag :tag => 'a', :content => 'Closed', |
81 :attributes => { :href => "/issues/bulk_edit?#{ids}&issue%5Bstatus_id%5D=5", | 76 :attributes => { :href => "/issues/bulk_update?#{ids}&issue%5Bstatus_id%5D=5", |
82 :class => '' } | 77 :class => '' } |
83 assert_tag :tag => 'a', :content => 'Immediate', | 78 assert_tag :tag => 'a', :content => 'Immediate', |
84 :attributes => { :href => "/issues/bulk_edit?#{ids}&issue%5Bpriority_id%5D=8", | 79 :attributes => { :href => "/issues/bulk_update?#{ids}&issue%5Bpriority_id%5D=8", |
85 :class => '' } | 80 :class => '' } |
86 assert_tag :tag => 'a', :content => 'Dave Lopper', | 81 assert_tag :tag => 'a', :content => 'Dave Lopper', |
87 :attributes => { :href => "/issues/bulk_edit?#{ids}&issue%5Bassigned_to_id%5D=3", | 82 :attributes => { :href => "/issues/bulk_update?#{ids}&issue%5Bassigned_to_id%5D=3", |
88 :class => '' } | 83 :class => '' } |
89 assert_tag :tag => 'a', :content => 'Copy', | 84 assert_tag :tag => 'a', :content => 'Copy', |
90 :attributes => { :href => "/issues/move/new?copy_options%5Bcopy%5D=t&#{ids}", | 85 :attributes => { :href => "/issues/bulk_edit?copy=1&#{ids}", |
91 :class => 'icon-copy' } | 86 :class => 'icon-copy' } |
92 assert_tag :tag => 'a', :content => 'Move', | 87 assert_no_tag :tag => 'a', :content => 'Move' |
93 :attributes => { :href => "/issues/move/new?#{ids}", | 88 assert_tag :tag => 'a', :content => 'Delete', |
94 :class => 'icon-move' } | 89 :attributes => { :href => "/issues?#{ids}", |
95 assert_tag :tag => 'a', :content => 'Delete', | |
96 :attributes => { :href => "/issues/destroy?#{ids}", | |
97 :class => 'icon-del' } | 90 :class => 'icon-del' } |
98 end | 91 end |
99 | 92 |
100 def test_context_menu_multiple_issues_of_different_projects | 93 def test_context_menu_multiple_issues_of_different_projects |
101 @request.session[:user_id] = 2 | 94 @request.session[:user_id] = 2 |
103 assert_response :success | 96 assert_response :success |
104 assert_template 'context_menu' | 97 assert_template 'context_menu' |
105 assert_not_nil assigns(:issues) | 98 assert_not_nil assigns(:issues) |
106 assert_equal [1, 2, 6], assigns(:issues).map(&:id).sort | 99 assert_equal [1, 2, 6], assigns(:issues).map(&:id).sort |
107 | 100 |
108 ids = assigns(:issues).map(&:id).map {|i| "ids%5B%5D=#{i}"}.join('&') | 101 ids = assigns(:issues).map(&:id).sort.map {|i| "ids%5B%5D=#{i}"}.join('&') |
109 assert_tag :tag => 'a', :content => 'Edit', | 102 assert_tag :tag => 'a', :content => 'Edit', |
110 :attributes => { :href => "/issues/bulk_edit?#{ids}", | 103 :attributes => { :href => "/issues/bulk_edit?#{ids}", |
111 :class => 'icon-edit' } | 104 :class => 'icon-edit' } |
112 assert_tag :tag => 'a', :content => 'Closed', | 105 assert_tag :tag => 'a', :content => 'Closed', |
113 :attributes => { :href => "/issues/bulk_edit?#{ids}&issue%5Bstatus_id%5D=5", | 106 :attributes => { :href => "/issues/bulk_update?#{ids}&issue%5Bstatus_id%5D=5", |
114 :class => '' } | 107 :class => '' } |
115 assert_tag :tag => 'a', :content => 'Immediate', | 108 assert_tag :tag => 'a', :content => 'Immediate', |
116 :attributes => { :href => "/issues/bulk_edit?#{ids}&issue%5Bpriority_id%5D=8", | 109 :attributes => { :href => "/issues/bulk_update?#{ids}&issue%5Bpriority_id%5D=8", |
117 :class => '' } | 110 :class => '' } |
118 assert_tag :tag => 'a', :content => 'John Smith', | 111 assert_tag :tag => 'a', :content => 'John Smith', |
119 :attributes => { :href => "/issues/bulk_edit?#{ids}&issue%5Bassigned_to_id%5D=2", | 112 :attributes => { :href => "/issues/bulk_update?#{ids}&issue%5Bassigned_to_id%5D=2", |
120 :class => '' } | 113 :class => '' } |
121 assert_tag :tag => 'a', :content => 'Delete', | 114 assert_tag :tag => 'a', :content => 'Delete', |
122 :attributes => { :href => "/issues/destroy?#{ids}", | 115 :attributes => { :href => "/issues?#{ids}", |
123 :class => 'icon-del' } | 116 :class => 'icon-del' } |
117 end | |
118 | |
119 def test_context_menu_should_include_list_custom_fields | |
120 field = IssueCustomField.create!(:name => 'List', :field_format => 'list', | |
121 :possible_values => ['Foo', 'Bar'], :is_for_all => true, :tracker_ids => [1, 2, 3]) | |
122 @request.session[:user_id] = 2 | |
123 get :issues, :ids => [1] | |
124 | |
125 assert_tag 'a', | |
126 :content => 'List', | |
127 :attributes => {:href => '#'}, | |
128 :sibling => {:tag => 'ul', :children => {:count => 3}} | |
129 | |
130 assert_tag 'a', | |
131 :content => 'Foo', | |
132 :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=Foo"} | |
133 assert_tag 'a', | |
134 :content => 'none', | |
135 :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D="} | |
136 end | |
137 | |
138 def test_context_menu_should_not_include_null_value_for_required_custom_fields | |
139 field = IssueCustomField.create!(:name => 'List', :is_required => true, :field_format => 'list', | |
140 :possible_values => ['Foo', 'Bar'], :is_for_all => true, :tracker_ids => [1, 2, 3]) | |
141 @request.session[:user_id] = 2 | |
142 get :issues, :ids => [1, 2] | |
143 | |
144 assert_tag 'a', | |
145 :content => 'List', | |
146 :attributes => {:href => '#'}, | |
147 :sibling => {:tag => 'ul', :children => {:count => 2}} | |
148 end | |
149 | |
150 def test_context_menu_on_single_issue_should_select_current_custom_field_value | |
151 field = IssueCustomField.create!(:name => 'List', :field_format => 'list', | |
152 :possible_values => ['Foo', 'Bar'], :is_for_all => true, :tracker_ids => [1, 2, 3]) | |
153 issue = Issue.find(1) | |
154 issue.custom_field_values = {field.id => 'Bar'} | |
155 issue.save! | |
156 @request.session[:user_id] = 2 | |
157 get :issues, :ids => [1] | |
158 | |
159 assert_tag 'a', | |
160 :content => 'List', | |
161 :attributes => {:href => '#'}, | |
162 :sibling => {:tag => 'ul', :children => {:count => 3}} | |
163 assert_tag 'a', | |
164 :content => 'Bar', | |
165 :attributes => {:class => /icon-checked/} | |
166 end | |
167 | |
168 def test_context_menu_should_include_bool_custom_fields | |
169 field = IssueCustomField.create!(:name => 'Bool', :field_format => 'bool', | |
170 :is_for_all => true, :tracker_ids => [1, 2, 3]) | |
171 @request.session[:user_id] = 2 | |
172 get :issues, :ids => [1] | |
173 | |
174 assert_tag 'a', | |
175 :content => 'Bool', | |
176 :attributes => {:href => '#'}, | |
177 :sibling => {:tag => 'ul', :children => {:count => 3}} | |
178 | |
179 assert_tag 'a', | |
180 :content => 'Yes', | |
181 :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=1"} | |
182 end | |
183 | |
184 def test_context_menu_should_include_user_custom_fields | |
185 field = IssueCustomField.create!(:name => 'User', :field_format => 'user', | |
186 :is_for_all => true, :tracker_ids => [1, 2, 3]) | |
187 @request.session[:user_id] = 2 | |
188 get :issues, :ids => [1] | |
189 | |
190 assert_tag 'a', | |
191 :content => 'User', | |
192 :attributes => {:href => '#'}, | |
193 :sibling => {:tag => 'ul', :children => {:count => Project.find(1).members.count + 1}} | |
194 | |
195 assert_tag 'a', | |
196 :content => 'John Smith', | |
197 :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=2"} | |
198 end | |
199 | |
200 def test_context_menu_should_include_version_custom_fields | |
201 field = IssueCustomField.create!(:name => 'Version', :field_format => 'version', :is_for_all => true, :tracker_ids => [1, 2, 3]) | |
202 @request.session[:user_id] = 2 | |
203 get :issues, :ids => [1] | |
204 | |
205 assert_tag 'a', | |
206 :content => 'Version', | |
207 :attributes => {:href => '#'}, | |
208 :sibling => {:tag => 'ul', :children => {:count => Project.find(1).shared_versions.count + 1}} | |
209 | |
210 assert_tag 'a', | |
211 :content => '2.0', | |
212 :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=3"} | |
213 end | |
214 | |
215 def test_context_menu_by_assignable_user_should_include_assigned_to_me_link | |
216 @request.session[:user_id] = 2 | |
217 get :issues, :ids => [1] | |
218 assert_response :success | |
219 assert_template 'context_menu' | |
220 | |
221 assert_tag :tag => 'a', :content => / me /, | |
222 :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&issue%5Bassigned_to_id%5D=2', | |
223 :class => '' } | |
224 end | |
225 | |
226 def test_context_menu_should_propose_shared_versions_for_issues_from_different_projects | |
227 @request.session[:user_id] = 2 | |
228 version = Version.create!(:name => 'Shared', :sharing => 'system', :project_id => 1) | |
229 | |
230 get :issues, :ids => [1, 4] | |
231 assert_response :success | |
232 assert_template 'context_menu' | |
233 | |
234 assert_include version, assigns(:versions) | |
235 assert_tag :tag => 'a', :content => 'eCookbook - Shared' | |
124 end | 236 end |
125 | 237 |
126 def test_context_menu_issue_visibility | 238 def test_context_menu_issue_visibility |
127 get :issues, :ids => [1, 4] | 239 get :issues, :ids => [1, 4] |
128 assert_response :success | 240 assert_response :success |