annotate test/functional/context_menus_controller_test.rb @ 1082:997f6d7738f7 bug_531

In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Thu, 22 Nov 2012 18:04:17 +0000
parents 5e80956cc792
children bb32da3bea34
rev   line source
Chris@119 1 require File.expand_path('../../test_helper', __FILE__)
Chris@14 2
Chris@14 3 class ContextMenusControllerTest < ActionController::TestCase
Chris@909 4 fixtures :projects,
Chris@909 5 :trackers,
Chris@909 6 :projects_trackers,
Chris@909 7 :roles,
Chris@909 8 :member_roles,
Chris@909 9 :members,
Chris@909 10 :auth_sources,
Chris@909 11 :enabled_modules,
Chris@909 12 :workflows,
Chris@909 13 :journals, :journal_details,
Chris@909 14 :versions,
Chris@909 15 :issues, :issue_statuses, :issue_categories,
Chris@909 16 :users,
Chris@909 17 :enumerations
Chris@14 18
Chris@14 19 def test_context_menu_one_issue
Chris@14 20 @request.session[:user_id] = 2
Chris@14 21 get :issues, :ids => [1]
Chris@14 22 assert_response :success
Chris@14 23 assert_template 'context_menu'
Chris@14 24 assert_tag :tag => 'a', :content => 'Edit',
Chris@14 25 :attributes => { :href => '/issues/1/edit',
Chris@14 26 :class => 'icon-edit' }
Chris@14 27 assert_tag :tag => 'a', :content => 'Closed',
chris@22 28 :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;issue%5Bstatus_id%5D=5',
Chris@14 29 :class => '' }
Chris@14 30 assert_tag :tag => 'a', :content => 'Immediate',
Chris@14 31 :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;issue%5Bpriority_id%5D=8',
Chris@14 32 :class => '' }
Chris@909 33 assert_no_tag :tag => 'a', :content => 'Inactive Priority'
Chris@14 34 # Versions
Chris@14 35 assert_tag :tag => 'a', :content => '2.0',
Chris@14 36 :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;issue%5Bfixed_version_id%5D=3',
Chris@14 37 :class => '' }
Chris@14 38 assert_tag :tag => 'a', :content => 'eCookbook Subproject 1 - 2.0',
Chris@14 39 :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;issue%5Bfixed_version_id%5D=4',
Chris@14 40 :class => '' }
Chris@14 41
Chris@14 42 assert_tag :tag => 'a', :content => 'Dave Lopper',
Chris@14 43 :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;issue%5Bassigned_to_id%5D=3',
Chris@14 44 :class => '' }
Chris@14 45 assert_tag :tag => 'a', :content => 'Duplicate',
Chris@14 46 :attributes => { :href => '/projects/ecookbook/issues/1/copy',
Chris@14 47 :class => 'icon-duplicate' }
Chris@14 48 assert_tag :tag => 'a', :content => 'Copy',
Chris@14 49 :attributes => { :href => '/issues/move/new?copy_options%5Bcopy%5D=t&amp;ids%5B%5D=1',
Chris@14 50 :class => 'icon-copy' }
Chris@14 51 assert_tag :tag => 'a', :content => 'Move',
Chris@14 52 :attributes => { :href => '/issues/move/new?ids%5B%5D=1',
Chris@14 53 :class => 'icon-move' }
Chris@14 54 assert_tag :tag => 'a', :content => 'Delete',
Chris@14 55 :attributes => { :href => '/issues/destroy?ids%5B%5D=1',
Chris@14 56 :class => 'icon-del' }
Chris@14 57 end
Chris@14 58
Chris@14 59 def test_context_menu_one_issue_by_anonymous
Chris@14 60 get :issues, :ids => [1]
Chris@14 61 assert_response :success
Chris@14 62 assert_template 'context_menu'
Chris@14 63 assert_tag :tag => 'a', :content => 'Delete',
Chris@14 64 :attributes => { :href => '#',
Chris@14 65 :class => 'icon-del disabled' }
Chris@14 66 end
Chris@909 67
Chris@14 68 def test_context_menu_multiple_issues_of_same_project
Chris@14 69 @request.session[:user_id] = 2
Chris@14 70 get :issues, :ids => [1, 2]
Chris@14 71 assert_response :success
Chris@14 72 assert_template 'context_menu'
Chris@119 73 assert_not_nil assigns(:issues)
Chris@119 74 assert_equal [1, 2], assigns(:issues).map(&:id).sort
Chris@909 75
Chris@119 76 ids = assigns(:issues).map(&:id).map {|i| "ids%5B%5D=#{i}"}.join('&amp;')
Chris@14 77 assert_tag :tag => 'a', :content => 'Edit',
Chris@119 78 :attributes => { :href => "/issues/bulk_edit?#{ids}",
Chris@14 79 :class => 'icon-edit' }
chris@22 80 assert_tag :tag => 'a', :content => 'Closed',
Chris@119 81 :attributes => { :href => "/issues/bulk_edit?#{ids}&amp;issue%5Bstatus_id%5D=5",
chris@22 82 :class => '' }
Chris@14 83 assert_tag :tag => 'a', :content => 'Immediate',
Chris@119 84 :attributes => { :href => "/issues/bulk_edit?#{ids}&amp;issue%5Bpriority_id%5D=8",
Chris@14 85 :class => '' }
Chris@14 86 assert_tag :tag => 'a', :content => 'Dave Lopper',
Chris@119 87 :attributes => { :href => "/issues/bulk_edit?#{ids}&amp;issue%5Bassigned_to_id%5D=3",
Chris@14 88 :class => '' }
Chris@14 89 assert_tag :tag => 'a', :content => 'Copy',
Chris@119 90 :attributes => { :href => "/issues/move/new?copy_options%5Bcopy%5D=t&amp;#{ids}",
Chris@14 91 :class => 'icon-copy' }
Chris@14 92 assert_tag :tag => 'a', :content => 'Move',
Chris@119 93 :attributes => { :href => "/issues/move/new?#{ids}",
Chris@14 94 :class => 'icon-move' }
Chris@14 95 assert_tag :tag => 'a', :content => 'Delete',
Chris@119 96 :attributes => { :href => "/issues/destroy?#{ids}",
Chris@14 97 :class => 'icon-del' }
Chris@14 98 end
Chris@14 99
chris@37 100 def test_context_menu_multiple_issues_of_different_projects
Chris@14 101 @request.session[:user_id] = 2
chris@37 102 get :issues, :ids => [1, 2, 6]
Chris@14 103 assert_response :success
Chris@14 104 assert_template 'context_menu'
Chris@119 105 assert_not_nil assigns(:issues)
Chris@119 106 assert_equal [1, 2, 6], assigns(:issues).map(&:id).sort
Chris@909 107
Chris@119 108 ids = assigns(:issues).map(&:id).map {|i| "ids%5B%5D=#{i}"}.join('&amp;')
chris@37 109 assert_tag :tag => 'a', :content => 'Edit',
chris@37 110 :attributes => { :href => "/issues/bulk_edit?#{ids}",
chris@37 111 :class => 'icon-edit' }
chris@37 112 assert_tag :tag => 'a', :content => 'Closed',
chris@37 113 :attributes => { :href => "/issues/bulk_edit?#{ids}&amp;issue%5Bstatus_id%5D=5",
chris@37 114 :class => '' }
chris@37 115 assert_tag :tag => 'a', :content => 'Immediate',
chris@37 116 :attributes => { :href => "/issues/bulk_edit?#{ids}&amp;issue%5Bpriority_id%5D=8",
chris@37 117 :class => '' }
chris@37 118 assert_tag :tag => 'a', :content => 'John Smith',
chris@37 119 :attributes => { :href => "/issues/bulk_edit?#{ids}&amp;issue%5Bassigned_to_id%5D=2",
chris@37 120 :class => '' }
Chris@14 121 assert_tag :tag => 'a', :content => 'Delete',
chris@37 122 :attributes => { :href => "/issues/destroy?#{ids}",
chris@37 123 :class => 'icon-del' }
Chris@14 124 end
Chris@909 125
Chris@119 126 def test_context_menu_issue_visibility
Chris@119 127 get :issues, :ids => [1, 4]
Chris@119 128 assert_response :success
Chris@119 129 assert_template 'context_menu'
Chris@119 130 assert_equal [1], assigns(:issues).collect(&:id)
Chris@119 131 end
Chris@909 132
Chris@909 133 def test_time_entries_context_menu
Chris@909 134 @request.session[:user_id] = 2
Chris@909 135 get :time_entries, :ids => [1, 2]
Chris@909 136 assert_response :success
Chris@909 137 assert_template 'time_entries'
Chris@909 138 assert_tag 'a', :content => 'Edit'
Chris@909 139 assert_no_tag 'a', :content => 'Edit', :attributes => {:class => /disabled/}
Chris@909 140 end
Chris@909 141
Chris@909 142 def test_time_entries_context_menu_without_edit_permission
Chris@909 143 @request.session[:user_id] = 2
Chris@909 144 Role.find_by_name('Manager').remove_permission! :edit_time_entries
Chris@909 145
Chris@909 146 get :time_entries, :ids => [1, 2]
Chris@909 147 assert_response :success
Chris@909 148 assert_template 'time_entries'
Chris@909 149 assert_tag 'a', :content => 'Edit', :attributes => {:class => /disabled/}
Chris@909 150 end
Chris@14 151 end