##// END OF EJS Templates
add missing fixture to Redmine::Hook::ManagerTest...
Toshi MARUYAMA -
r13516:4dfc0f04ad38
parent child
Show More
@@ -1,179 +1,180
1 1 # Redmine - project management software
2 2 # Copyright (C) 2006-2015 Jean-Philippe Lang
3 3 #
4 4 # This program is free software; you can redistribute it and/or
5 5 # modify it under the terms of the GNU General Public License
6 6 # as published by the Free Software Foundation; either version 2
7 7 # of the License, or (at your option) any later version.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 require File.expand_path('../../../../test_helper', __FILE__)
19 19
20 20 class Redmine::Hook::ManagerTest < ActionView::TestCase
21 21 fixtures :projects, :users, :members, :member_roles, :roles,
22 22 :groups_users,
23 :email_addresses,
23 24 :trackers, :projects_trackers,
24 25 :enabled_modules,
25 26 :versions,
26 27 :issue_statuses, :issue_categories, :issue_relations,
27 28 :enumerations,
28 29 :issues
29 30
30 31 # Some hooks that are manually registered in these tests
31 32 class TestHook < Redmine::Hook::ViewListener; end
32 33
33 34 class TestHook1 < TestHook
34 35 def view_layouts_base_html_head(context)
35 36 'Test hook 1 listener.'
36 37 end
37 38 end
38 39
39 40 class TestHook2 < TestHook
40 41 def view_layouts_base_html_head(context)
41 42 'Test hook 2 listener.'
42 43 end
43 44 end
44 45
45 46 class TestHook3 < TestHook
46 47 def view_layouts_base_html_head(context)
47 48 "Context keys: #{context.keys.collect(&:to_s).sort.join(', ')}."
48 49 end
49 50 end
50 51
51 52 class TestLinkToHook < TestHook
52 53 def view_layouts_base_html_head(context)
53 54 link_to('Issues', :controller => 'issues')
54 55 end
55 56 end
56 57
57 58 class TestHookHelperController < ActionController::Base
58 59 include Redmine::Hook::Helper
59 60 end
60 61
61 62 class TestHookHelperView < ActionView::Base
62 63 include Redmine::Hook::Helper
63 64 end
64 65
65 66 Redmine::Hook.clear_listeners
66 67
67 68 def setup
68 69 @hook_module = Redmine::Hook
69 70 @hook_module.clear_listeners
70 71 end
71 72
72 73 def teardown
73 74 @hook_module.clear_listeners
74 75 end
75 76
76 77 def test_clear_listeners
77 78 assert_equal 0, @hook_module.hook_listeners(:view_layouts_base_html_head).size
78 79 @hook_module.add_listener(TestHook1)
79 80 @hook_module.add_listener(TestHook2)
80 81 assert_equal 2, @hook_module.hook_listeners(:view_layouts_base_html_head).size
81 82
82 83 @hook_module.clear_listeners
83 84 assert_equal 0, @hook_module.hook_listeners(:view_layouts_base_html_head).size
84 85 end
85 86
86 87 def test_add_listener
87 88 assert_equal 0, @hook_module.hook_listeners(:view_layouts_base_html_head).size
88 89 @hook_module.add_listener(TestHook1)
89 90 assert_equal 1, @hook_module.hook_listeners(:view_layouts_base_html_head).size
90 91 end
91 92
92 93 def test_call_hook
93 94 @hook_module.add_listener(TestHook1)
94 95 assert_equal ['Test hook 1 listener.'], hook_helper.call_hook(:view_layouts_base_html_head)
95 96 end
96 97
97 98 def test_call_hook_with_context
98 99 @hook_module.add_listener(TestHook3)
99 100 assert_equal ['Context keys: bar, controller, foo, hook_caller, project, request.'],
100 101 hook_helper.call_hook(:view_layouts_base_html_head, :foo => 1, :bar => 'a')
101 102 end
102 103
103 104 def test_call_hook_with_multiple_listeners
104 105 @hook_module.add_listener(TestHook1)
105 106 @hook_module.add_listener(TestHook2)
106 107 assert_equal ['Test hook 1 listener.', 'Test hook 2 listener.'], hook_helper.call_hook(:view_layouts_base_html_head)
107 108 end
108 109
109 110 # Context: Redmine::Hook::Helper.call_hook default_url
110 111 def test_call_hook_default_url_options
111 112 @hook_module.add_listener(TestLinkToHook)
112 113
113 114 assert_equal ['<a href="/issues">Issues</a>'], hook_helper.call_hook(:view_layouts_base_html_head)
114 115 end
115 116
116 117 # Context: Redmine::Hook::Helper.call_hook
117 118 def test_call_hook_with_project_added_to_context
118 119 @hook_module.add_listener(TestHook3)
119 120 assert_match /project/i, hook_helper.call_hook(:view_layouts_base_html_head)[0]
120 121 end
121 122
122 123 def test_call_hook_from_controller_with_controller_added_to_context
123 124 @hook_module.add_listener(TestHook3)
124 125 assert_match /controller/i, hook_helper.call_hook(:view_layouts_base_html_head)[0]
125 126 end
126 127
127 128 def test_call_hook_from_controller_with_request_added_to_context
128 129 @hook_module.add_listener(TestHook3)
129 130 assert_match /request/i, hook_helper.call_hook(:view_layouts_base_html_head)[0]
130 131 end
131 132
132 133 def test_call_hook_from_view_with_project_added_to_context
133 134 @hook_module.add_listener(TestHook3)
134 135 assert_match /project/i, view_hook_helper.call_hook(:view_layouts_base_html_head)
135 136 end
136 137
137 138 def test_call_hook_from_view_with_controller_added_to_context
138 139 @hook_module.add_listener(TestHook3)
139 140 assert_match /controller/i, view_hook_helper.call_hook(:view_layouts_base_html_head)
140 141 end
141 142
142 143 def test_call_hook_from_view_with_request_added_to_context
143 144 @hook_module.add_listener(TestHook3)
144 145 assert_match /request/i, view_hook_helper.call_hook(:view_layouts_base_html_head)
145 146 end
146 147
147 148 def test_call_hook_from_view_should_join_responses_with_a_space
148 149 @hook_module.add_listener(TestHook1)
149 150 @hook_module.add_listener(TestHook2)
150 151 assert_equal 'Test hook 1 listener. Test hook 2 listener.',
151 152 view_hook_helper.call_hook(:view_layouts_base_html_head)
152 153 end
153 154
154 155 def test_call_hook_should_not_change_the_default_url_for_email_notifications
155 156 issue = Issue.find(1)
156 157
157 158 ActionMailer::Base.deliveries.clear
158 159 Mailer.deliver_issue_add(issue)
159 160 mail = ActionMailer::Base.deliveries.last
160 161
161 162 @hook_module.add_listener(TestLinkToHook)
162 163 hook_helper.call_hook(:view_layouts_base_html_head)
163 164
164 165 ActionMailer::Base.deliveries.clear
165 166 Mailer.deliver_issue_add(issue)
166 167 mail2 = ActionMailer::Base.deliveries.last
167 168
168 169 assert_equal mail_body(mail), mail_body(mail2)
169 170 end
170 171
171 172 def hook_helper
172 173 @hook_helper ||= TestHookHelperController.new
173 174 end
174 175
175 176 def view_hook_helper
176 177 @view_hook_helper ||= TestHookHelperView.new(Rails.root.to_s + '/app/views')
177 178 end
178 179 end
179 180
General Comments 0
You need to be logged in to leave comments. Login now