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