annotate .svn/pristine/dd/ddb1e7765908d6669ef044e05cf9c200a2438849.svn-base @ 1296:038ba2d95de8 redmine-2.2

Fix redmine-2.2 branch update (add missing svn files)
author Chris Cannam
date Fri, 14 Jun 2013 09:05:06 +0100
parents
children
rev   line source
Chris@1296 1 require File.expand_path('../../test_helper', __FILE__)
Chris@1296 2
Chris@1296 3 class ContextMenusControllerTest < ActionController::TestCase
Chris@1296 4 fixtures :projects,
Chris@1296 5 :trackers,
Chris@1296 6 :projects_trackers,
Chris@1296 7 :roles,
Chris@1296 8 :member_roles,
Chris@1296 9 :members,
Chris@1296 10 :enabled_modules,
Chris@1296 11 :workflows,
Chris@1296 12 :journals, :journal_details,
Chris@1296 13 :versions,
Chris@1296 14 :issues, :issue_statuses, :issue_categories,
Chris@1296 15 :users,
Chris@1296 16 :enumerations,
Chris@1296 17 :time_entries
Chris@1296 18
Chris@1296 19 def test_context_menu_one_issue
Chris@1296 20 @request.session[:user_id] = 2
Chris@1296 21 get :issues, :ids => [1]
Chris@1296 22 assert_response :success
Chris@1296 23 assert_template 'context_menu'
Chris@1296 24 assert_tag :tag => 'a', :content => 'Edit',
Chris@1296 25 :attributes => { :href => '/issues/1/edit',
Chris@1296 26 :class => 'icon-edit' }
Chris@1296 27 assert_tag :tag => 'a', :content => 'Closed',
Chris@1296 28 :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bstatus_id%5D=5',
Chris@1296 29 :class => '' }
Chris@1296 30 assert_tag :tag => 'a', :content => 'Immediate',
Chris@1296 31 :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bpriority_id%5D=8',
Chris@1296 32 :class => '' }
Chris@1296 33 assert_no_tag :tag => 'a', :content => 'Inactive Priority'
Chris@1296 34 # Versions
Chris@1296 35 assert_tag :tag => 'a', :content => '2.0',
Chris@1296 36 :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bfixed_version_id%5D=3',
Chris@1296 37 :class => '' }
Chris@1296 38 assert_tag :tag => 'a', :content => 'eCookbook Subproject 1 - 2.0',
Chris@1296 39 :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bfixed_version_id%5D=4',
Chris@1296 40 :class => '' }
Chris@1296 41
Chris@1296 42 assert_tag :tag => 'a', :content => 'Dave Lopper',
Chris@1296 43 :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bassigned_to_id%5D=3',
Chris@1296 44 :class => '' }
Chris@1296 45 assert_tag :tag => 'a', :content => 'Copy',
Chris@1296 46 :attributes => { :href => '/projects/ecookbook/issues/1/copy',
Chris@1296 47 :class => 'icon-copy' }
Chris@1296 48 assert_no_tag :tag => 'a', :content => 'Move'
Chris@1296 49 assert_tag :tag => 'a', :content => 'Delete',
Chris@1296 50 :attributes => { :href => '/issues?ids%5B%5D=1',
Chris@1296 51 :class => 'icon-del' }
Chris@1296 52 end
Chris@1296 53
Chris@1296 54 def test_context_menu_one_issue_by_anonymous
Chris@1296 55 get :issues, :ids => [1]
Chris@1296 56 assert_response :success
Chris@1296 57 assert_template 'context_menu'
Chris@1296 58 assert_tag :tag => 'a', :content => 'Delete',
Chris@1296 59 :attributes => { :href => '#',
Chris@1296 60 :class => 'icon-del disabled' }
Chris@1296 61 end
Chris@1296 62
Chris@1296 63 def test_context_menu_multiple_issues_of_same_project
Chris@1296 64 @request.session[:user_id] = 2
Chris@1296 65 get :issues, :ids => [1, 2]
Chris@1296 66 assert_response :success
Chris@1296 67 assert_template 'context_menu'
Chris@1296 68 assert_not_nil assigns(:issues)
Chris@1296 69 assert_equal [1, 2], assigns(:issues).map(&:id).sort
Chris@1296 70
Chris@1296 71 ids = assigns(:issues).map(&:id).sort.map {|i| "ids%5B%5D=#{i}"}.join('&amp;')
Chris@1296 72 assert_tag :tag => 'a', :content => 'Edit',
Chris@1296 73 :attributes => { :href => "/issues/bulk_edit?#{ids}",
Chris@1296 74 :class => 'icon-edit' }
Chris@1296 75 assert_tag :tag => 'a', :content => 'Closed',
Chris@1296 76 :attributes => { :href => "/issues/bulk_update?#{ids}&amp;issue%5Bstatus_id%5D=5",
Chris@1296 77 :class => '' }
Chris@1296 78 assert_tag :tag => 'a', :content => 'Immediate',
Chris@1296 79 :attributes => { :href => "/issues/bulk_update?#{ids}&amp;issue%5Bpriority_id%5D=8",
Chris@1296 80 :class => '' }
Chris@1296 81 assert_tag :tag => 'a', :content => 'Dave Lopper',
Chris@1296 82 :attributes => { :href => "/issues/bulk_update?#{ids}&amp;issue%5Bassigned_to_id%5D=3",
Chris@1296 83 :class => '' }
Chris@1296 84 assert_tag :tag => 'a', :content => 'Copy',
Chris@1296 85 :attributes => { :href => "/issues/bulk_edit?copy=1&amp;#{ids}",
Chris@1296 86 :class => 'icon-copy' }
Chris@1296 87 assert_no_tag :tag => 'a', :content => 'Move'
Chris@1296 88 assert_tag :tag => 'a', :content => 'Delete',
Chris@1296 89 :attributes => { :href => "/issues?#{ids}",
Chris@1296 90 :class => 'icon-del' }
Chris@1296 91 end
Chris@1296 92
Chris@1296 93 def test_context_menu_multiple_issues_of_different_projects
Chris@1296 94 @request.session[:user_id] = 2
Chris@1296 95 get :issues, :ids => [1, 2, 6]
Chris@1296 96 assert_response :success
Chris@1296 97 assert_template 'context_menu'
Chris@1296 98 assert_not_nil assigns(:issues)
Chris@1296 99 assert_equal [1, 2, 6], assigns(:issues).map(&:id).sort
Chris@1296 100
Chris@1296 101 ids = assigns(:issues).map(&:id).sort.map {|i| "ids%5B%5D=#{i}"}.join('&amp;')
Chris@1296 102 assert_tag :tag => 'a', :content => 'Edit',
Chris@1296 103 :attributes => { :href => "/issues/bulk_edit?#{ids}",
Chris@1296 104 :class => 'icon-edit' }
Chris@1296 105 assert_tag :tag => 'a', :content => 'Closed',
Chris@1296 106 :attributes => { :href => "/issues/bulk_update?#{ids}&amp;issue%5Bstatus_id%5D=5",
Chris@1296 107 :class => '' }
Chris@1296 108 assert_tag :tag => 'a', :content => 'Immediate',
Chris@1296 109 :attributes => { :href => "/issues/bulk_update?#{ids}&amp;issue%5Bpriority_id%5D=8",
Chris@1296 110 :class => '' }
Chris@1296 111 assert_tag :tag => 'a', :content => 'John Smith',
Chris@1296 112 :attributes => { :href => "/issues/bulk_update?#{ids}&amp;issue%5Bassigned_to_id%5D=2",
Chris@1296 113 :class => '' }
Chris@1296 114 assert_tag :tag => 'a', :content => 'Delete',
Chris@1296 115 :attributes => { :href => "/issues?#{ids}",
Chris@1296 116 :class => 'icon-del' }
Chris@1296 117 end
Chris@1296 118
Chris@1296 119 def test_context_menu_should_include_list_custom_fields
Chris@1296 120 field = IssueCustomField.create!(:name => 'List', :field_format => 'list',
Chris@1296 121 :possible_values => ['Foo', 'Bar'], :is_for_all => true, :tracker_ids => [1, 2, 3])
Chris@1296 122 @request.session[:user_id] = 2
Chris@1296 123 get :issues, :ids => [1]
Chris@1296 124
Chris@1296 125 assert_tag 'a',
Chris@1296 126 :content => 'List',
Chris@1296 127 :attributes => {:href => '#'},
Chris@1296 128 :sibling => {:tag => 'ul', :children => {:count => 3}}
Chris@1296 129
Chris@1296 130 assert_tag 'a',
Chris@1296 131 :content => 'Foo',
Chris@1296 132 :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=Foo"}
Chris@1296 133 assert_tag 'a',
Chris@1296 134 :content => 'none',
Chris@1296 135 :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=__none__"}
Chris@1296 136 end
Chris@1296 137
Chris@1296 138 def test_context_menu_should_not_include_null_value_for_required_custom_fields
Chris@1296 139 field = IssueCustomField.create!(:name => 'List', :is_required => true, :field_format => 'list',
Chris@1296 140 :possible_values => ['Foo', 'Bar'], :is_for_all => true, :tracker_ids => [1, 2, 3])
Chris@1296 141 @request.session[:user_id] = 2
Chris@1296 142 get :issues, :ids => [1, 2]
Chris@1296 143
Chris@1296 144 assert_tag 'a',
Chris@1296 145 :content => 'List',
Chris@1296 146 :attributes => {:href => '#'},
Chris@1296 147 :sibling => {:tag => 'ul', :children => {:count => 2}}
Chris@1296 148 end
Chris@1296 149
Chris@1296 150 def test_context_menu_on_single_issue_should_select_current_custom_field_value
Chris@1296 151 field = IssueCustomField.create!(:name => 'List', :field_format => 'list',
Chris@1296 152 :possible_values => ['Foo', 'Bar'], :is_for_all => true, :tracker_ids => [1, 2, 3])
Chris@1296 153 issue = Issue.find(1)
Chris@1296 154 issue.custom_field_values = {field.id => 'Bar'}
Chris@1296 155 issue.save!
Chris@1296 156 @request.session[:user_id] = 2
Chris@1296 157 get :issues, :ids => [1]
Chris@1296 158
Chris@1296 159 assert_tag 'a',
Chris@1296 160 :content => 'List',
Chris@1296 161 :attributes => {:href => '#'},
Chris@1296 162 :sibling => {:tag => 'ul', :children => {:count => 3}}
Chris@1296 163 assert_tag 'a',
Chris@1296 164 :content => 'Bar',
Chris@1296 165 :attributes => {:class => /icon-checked/}
Chris@1296 166 end
Chris@1296 167
Chris@1296 168 def test_context_menu_should_include_bool_custom_fields
Chris@1296 169 field = IssueCustomField.create!(:name => 'Bool', :field_format => 'bool',
Chris@1296 170 :is_for_all => true, :tracker_ids => [1, 2, 3])
Chris@1296 171 @request.session[:user_id] = 2
Chris@1296 172 get :issues, :ids => [1]
Chris@1296 173
Chris@1296 174 assert_tag 'a',
Chris@1296 175 :content => 'Bool',
Chris@1296 176 :attributes => {:href => '#'},
Chris@1296 177 :sibling => {:tag => 'ul', :children => {:count => 3}}
Chris@1296 178
Chris@1296 179 assert_tag 'a',
Chris@1296 180 :content => 'Yes',
Chris@1296 181 :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=1"}
Chris@1296 182 end
Chris@1296 183
Chris@1296 184 def test_context_menu_should_include_user_custom_fields
Chris@1296 185 field = IssueCustomField.create!(:name => 'User', :field_format => 'user',
Chris@1296 186 :is_for_all => true, :tracker_ids => [1, 2, 3])
Chris@1296 187 @request.session[:user_id] = 2
Chris@1296 188 get :issues, :ids => [1]
Chris@1296 189
Chris@1296 190 assert_tag 'a',
Chris@1296 191 :content => 'User',
Chris@1296 192 :attributes => {:href => '#'},
Chris@1296 193 :sibling => {:tag => 'ul', :children => {:count => Project.find(1).members.count + 1}}
Chris@1296 194
Chris@1296 195 assert_tag 'a',
Chris@1296 196 :content => 'John Smith',
Chris@1296 197 :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=2"}
Chris@1296 198 end
Chris@1296 199
Chris@1296 200 def test_context_menu_should_include_version_custom_fields
Chris@1296 201 field = IssueCustomField.create!(:name => 'Version', :field_format => 'version', :is_for_all => true, :tracker_ids => [1, 2, 3])
Chris@1296 202 @request.session[:user_id] = 2
Chris@1296 203 get :issues, :ids => [1]
Chris@1296 204
Chris@1296 205 assert_tag 'a',
Chris@1296 206 :content => 'Version',
Chris@1296 207 :attributes => {:href => '#'},
Chris@1296 208 :sibling => {:tag => 'ul', :children => {:count => Project.find(1).shared_versions.count + 1}}
Chris@1296 209
Chris@1296 210 assert_tag 'a',
Chris@1296 211 :content => '2.0',
Chris@1296 212 :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=3"}
Chris@1296 213 end
Chris@1296 214
Chris@1296 215 def test_context_menu_by_assignable_user_should_include_assigned_to_me_link
Chris@1296 216 @request.session[:user_id] = 2
Chris@1296 217 get :issues, :ids => [1]
Chris@1296 218 assert_response :success
Chris@1296 219 assert_template 'context_menu'
Chris@1296 220
Chris@1296 221 assert_tag :tag => 'a', :content => / me /,
Chris@1296 222 :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bassigned_to_id%5D=2',
Chris@1296 223 :class => '' }
Chris@1296 224 end
Chris@1296 225
Chris@1296 226 def test_context_menu_should_propose_shared_versions_for_issues_from_different_projects
Chris@1296 227 @request.session[:user_id] = 2
Chris@1296 228 version = Version.create!(:name => 'Shared', :sharing => 'system', :project_id => 1)
Chris@1296 229
Chris@1296 230 get :issues, :ids => [1, 4]
Chris@1296 231 assert_response :success
Chris@1296 232 assert_template 'context_menu'
Chris@1296 233
Chris@1296 234 assert_include version, assigns(:versions)
Chris@1296 235 assert_tag :tag => 'a', :content => 'eCookbook - Shared'
Chris@1296 236 end
Chris@1296 237
Chris@1296 238 def test_context_menu_issue_visibility
Chris@1296 239 get :issues, :ids => [1, 4]
Chris@1296 240 assert_response :success
Chris@1296 241 assert_template 'context_menu'
Chris@1296 242 assert_equal [1], assigns(:issues).collect(&:id)
Chris@1296 243 end
Chris@1296 244
Chris@1296 245 def test_time_entries_context_menu
Chris@1296 246 @request.session[:user_id] = 2
Chris@1296 247 get :time_entries, :ids => [1, 2]
Chris@1296 248 assert_response :success
Chris@1296 249 assert_template 'time_entries'
Chris@1296 250 assert_tag 'a', :content => 'Edit'
Chris@1296 251 assert_no_tag 'a', :content => 'Edit', :attributes => {:class => /disabled/}
Chris@1296 252 end
Chris@1296 253
Chris@1296 254 def test_time_entries_context_menu_without_edit_permission
Chris@1296 255 @request.session[:user_id] = 2
Chris@1296 256 Role.find_by_name('Manager').remove_permission! :edit_time_entries
Chris@1296 257
Chris@1296 258 get :time_entries, :ids => [1, 2]
Chris@1296 259 assert_response :success
Chris@1296 260 assert_template 'time_entries'
Chris@1296 261 assert_tag 'a', :content => 'Edit', :attributes => {:class => /disabled/}
Chris@1296 262 end
Chris@1296 263 end