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&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&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&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&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&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&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('&')
|
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}&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}&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}&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&#{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('&')
|
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}&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}&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}&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
|