menu_helper 0.0.5 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +40 -0
- data/{MIT-LICENSE → LICENSE} +0 -0
- data/{README → README.rdoc} +26 -30
- data/Rakefile +44 -36
- data/lib/menu_helper.rb +70 -33
- data/lib/menu_helper/menu.rb +86 -44
- data/lib/menu_helper/menu_bar.rb +113 -50
- data/test/app_root/config/routes.rb +0 -12
- data/test/helpers/menu_helper_test.rb +30 -0
- data/test/test_helper.rb +7 -2
- data/test/unit/html_element_test.rb +1 -1
- data/test/unit/menu_bar_test.rb +268 -25
- data/test/unit/menu_test.rb +377 -101
- metadata +11 -11
- data/CHANGELOG +0 -35
- data/test/unit/menu_helper_test.rb +0 -30
data/test/unit/menu_test.rb
CHANGED
@@ -1,177 +1,453 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../test_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
2
2
|
|
3
3
|
class MenuByDefaultTest < Test::Unit::TestCase
|
4
4
|
def setup
|
5
5
|
super
|
6
|
-
|
6
|
+
|
7
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
8
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home)
|
7
9
|
end
|
8
10
|
|
9
|
-
def
|
10
|
-
assert_equal '
|
11
|
+
def test_should_have_a_name
|
12
|
+
assert_equal 'home', @menu.name
|
11
13
|
end
|
12
14
|
|
13
|
-
def
|
14
|
-
assert_equal
|
15
|
+
def test_should_have_a_request_controller
|
16
|
+
assert_equal @controller, @menu.request_controller
|
15
17
|
end
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
def test_should_not_linkify_if_not_auto_linking
|
20
|
-
menu = create_menu(:home, nil, :auto_link => false)
|
21
|
-
assert_equal '<li id="home">Home</li>', menu.html
|
18
|
+
|
19
|
+
def test_should_have_a_parent_menu_bar
|
20
|
+
assert_equal @menu_bar, @menu.parent_menu_bar
|
22
21
|
end
|
23
22
|
|
24
|
-
def
|
25
|
-
menu
|
26
|
-
assert_equal 'home_menubar', menu.menu_bar[:id]
|
23
|
+
def test_should_not_have_a_parent_menu
|
24
|
+
assert_nil @menu.parent_menu
|
27
25
|
end
|
28
26
|
|
29
|
-
def
|
30
|
-
menu
|
31
|
-
assert !menu.auto_link?
|
27
|
+
def test_should_auto_set_ids
|
28
|
+
assert @menu.auto_set_ids?
|
32
29
|
end
|
33
30
|
|
34
|
-
def
|
35
|
-
menu
|
36
|
-
assert menu.auto_link?
|
31
|
+
def test_should_attach_active_submenus
|
32
|
+
assert @menu.attach_active_submenus?
|
37
33
|
end
|
38
34
|
|
39
|
-
def
|
40
|
-
menu
|
41
|
-
assert menu.auto_link?
|
35
|
+
def test_should_not_add_an_html_id
|
36
|
+
assert_nil @menu[:id]
|
42
37
|
end
|
43
38
|
|
44
|
-
def
|
45
|
-
menu
|
46
|
-
|
39
|
+
def test_should_not_be_selected
|
40
|
+
assert !@menu.selected?
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class MenuTest < Test::Unit::TestCase
|
45
|
+
def setup
|
46
|
+
super
|
47
|
+
|
48
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
49
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home)
|
47
50
|
end
|
48
51
|
|
49
|
-
def
|
50
|
-
|
51
|
-
|
52
|
+
def test_should_accept_a_block
|
53
|
+
in_block = false
|
54
|
+
menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home) do |menu|
|
55
|
+
in_block = true
|
52
56
|
end
|
53
|
-
|
57
|
+
|
58
|
+
assert in_block
|
54
59
|
end
|
55
60
|
|
56
|
-
def
|
57
|
-
|
58
|
-
home.menu :about_us do |about_us|
|
59
|
-
about_us.menu :contact
|
60
|
-
end
|
61
|
-
end
|
62
|
-
assert menu.selected?
|
61
|
+
def test_should_include_last_class_in_html_if_last_menu
|
62
|
+
assert_equal '<li class="menubar-last"><a href="http://test.host/home"><span>Home</span></a></li>', @menu.html(true)
|
63
63
|
end
|
64
64
|
|
65
|
-
def
|
66
|
-
menu =
|
67
|
-
|
65
|
+
def test_should_append_last_class_if_class_attribute_already_exists
|
66
|
+
@menu[:class] = 'pretty'
|
67
|
+
assert_equal '<li class="pretty menubar-last"><a href="http://test.host/home"><span>Home</span></a></li>', @menu.html(true)
|
68
68
|
end
|
69
69
|
|
70
|
-
def
|
71
|
-
|
72
|
-
|
73
|
-
|
70
|
+
def test_should_allow_last_class_to_be_customized
|
71
|
+
@original_last_class = PluginAWeek::MenuHelper::Menu.last_class
|
72
|
+
PluginAWeek::MenuHelper::Menu.last_class = 'menubar-end'
|
73
|
+
|
74
|
+
assert_equal '<li class="menubar-end"><a href="http://test.host/home"><span>Home</span></a></li>', @menu.html(true)
|
75
|
+
ensure
|
76
|
+
PluginAWeek::MenuHelper::Menu.last_class = @original_last_class
|
74
77
|
end
|
75
78
|
|
76
|
-
def
|
77
|
-
|
78
|
-
menu
|
79
|
-
|
80
|
-
|
79
|
+
def test_should_not_modify_html_options_after_building_html
|
80
|
+
@menu.html(true)
|
81
|
+
assert_nil @menu[:class]
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
class MenuWithMatchingNamedRouteTest < Test::Unit::TestCase
|
86
|
+
def setup
|
87
|
+
super
|
88
|
+
|
89
|
+
ActionController::Routing::Routes.draw do |map|
|
90
|
+
map.home '', :controller => 'home', :action => 'index'
|
91
|
+
end
|
92
|
+
|
93
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
94
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home)
|
81
95
|
end
|
82
96
|
|
83
|
-
def
|
84
|
-
|
85
|
-
expected
|
86
|
-
|
97
|
+
def test_should_build_url_from_named_route
|
98
|
+
expected = {:controller => 'home', :action => 'index', :only_path => false, :use_route => :home}
|
99
|
+
assert_equal expected, @menu.url_options
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
class MenuWithMatchingControllerTest < Test::Unit::TestCase
|
104
|
+
def setup
|
105
|
+
super
|
106
|
+
|
107
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
108
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home)
|
87
109
|
end
|
88
110
|
|
89
|
-
def
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
111
|
+
def test_should_use_name_as_controller
|
112
|
+
expected = {:controller => 'home', :only_path => false}
|
113
|
+
assert_equal expected, @menu.url_options
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
class MenuWithoutMatchingNamedRouteOrControllerTest < Test::Unit::TestCase
|
118
|
+
def setup
|
119
|
+
super
|
120
|
+
|
121
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
122
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :investors)
|
95
123
|
end
|
96
124
|
|
97
|
-
def
|
98
|
-
menu = create_menu(:investors)
|
125
|
+
def test_should_use_request_controller_as_controller_and_name_as_action
|
99
126
|
expected = {:controller => 'contact', :action => 'investors', :only_path => false}
|
100
|
-
assert_equal expected, menu.url_options
|
127
|
+
assert_equal expected, @menu.url_options
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
class MenuWithCustomUrlOptionsTest < Test::Unit::TestCase
|
132
|
+
def setup
|
133
|
+
super
|
134
|
+
|
135
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
101
136
|
end
|
102
137
|
|
103
|
-
def
|
104
|
-
menu =
|
138
|
+
def test_should_use_custom_controller_if_specified
|
139
|
+
menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :privacy_policy, :controller => 'home')
|
105
140
|
expected = {:controller => 'home', :action => 'privacy_policy', :only_path => false}
|
106
141
|
assert_equal expected, menu.url_options
|
107
142
|
end
|
108
143
|
|
109
|
-
def
|
110
|
-
menu =
|
144
|
+
def test_should_not_use_name_as_action_if_same_as_controller_name
|
145
|
+
menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :about_us, :controller => 'about_us')
|
111
146
|
expected = {:controller => 'about_us', :only_path => false}
|
112
147
|
assert_equal expected, menu.url_options
|
113
148
|
end
|
114
149
|
|
115
|
-
def
|
116
|
-
menu =
|
150
|
+
def test_should_use_custom_action_if_specified
|
151
|
+
menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :privacy_policy, :controller => 'home', :action => 'privacy')
|
117
152
|
expected = {:controller => 'home', :action => 'privacy', :only_path => false}
|
118
153
|
assert_equal expected, menu.url_options
|
119
154
|
end
|
155
|
+
end
|
156
|
+
|
157
|
+
class MenuWithSpecificUrlTest < Test::Unit::TestCase
|
158
|
+
def setup
|
159
|
+
super
|
160
|
+
|
161
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
162
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :search, 'Search', 'http://www.google.com')
|
163
|
+
end
|
120
164
|
|
121
|
-
def
|
122
|
-
|
123
|
-
|
165
|
+
def test_should_use_exact_url
|
166
|
+
assert_equal 'http://www.google.com', @menu.url_options
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
class MenuWithMenubarId < Test::Unit::TestCase
|
171
|
+
def setup
|
172
|
+
super
|
173
|
+
|
174
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller, {}, :id => 'menus')
|
175
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home)
|
124
176
|
end
|
125
177
|
|
126
|
-
def
|
127
|
-
|
128
|
-
|
178
|
+
def test_should_prefix_menu_id_with_menu_bar_id
|
179
|
+
assert_equal 'menus-home', @menu[:id]
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
class MenuWithoutContentTest < Test::Unit::TestCase
|
184
|
+
def setup
|
185
|
+
super
|
186
|
+
|
187
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
188
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home)
|
129
189
|
end
|
130
190
|
|
131
|
-
def
|
132
|
-
|
133
|
-
|
191
|
+
def test_should_use_titleized_version_of_name_as_content
|
192
|
+
assert_equal '<li><a href="http://test.host/home"><span>Home</span></a></li>', @menu.html
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
class MenuWithCustomContentTest < Test::Unit::TestCase
|
197
|
+
def setup
|
198
|
+
super
|
199
|
+
|
200
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
201
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home, 'My Home')
|
134
202
|
end
|
135
203
|
|
136
|
-
def
|
137
|
-
|
138
|
-
|
204
|
+
def test_should_use_custom_content_as_content
|
205
|
+
assert_equal '<li><a href="http://test.host/home"><span>My Home</span></a></li>', @menu.html
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
class MenuWithoutLinkingTest < Test::Unit::TestCase
|
210
|
+
def setup
|
211
|
+
super
|
212
|
+
|
213
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
214
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home, {}, :link => false)
|
139
215
|
end
|
140
216
|
|
141
|
-
def
|
142
|
-
|
143
|
-
|
217
|
+
def test_should_not_linkify_html
|
218
|
+
assert_equal '<li><span>Home</span></li>', @menu.html
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
class MenuWithoutAutoIdSettingTest < Test::Unit::TestCase
|
223
|
+
def setup
|
224
|
+
super
|
225
|
+
|
226
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller, {:auto_set_ids => false}, :id => 'menus')
|
227
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home)
|
228
|
+
end
|
229
|
+
|
230
|
+
def test_should_not_set_default_id
|
231
|
+
assert_nil @menu[:id]
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
class MenuWhenNotCurrentPageTest < Test::Unit::TestCase
|
236
|
+
def setup
|
237
|
+
super
|
238
|
+
|
239
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
240
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home)
|
144
241
|
end
|
145
242
|
|
146
|
-
def
|
147
|
-
menu
|
148
|
-
menu.html
|
149
|
-
assert_nil menu[:class]
|
243
|
+
def test_should_not_be_selected
|
244
|
+
assert !@menu.selected?
|
150
245
|
end
|
151
246
|
|
152
|
-
def
|
153
|
-
|
247
|
+
def test_should_not_include_selected_css_class_in_html
|
248
|
+
assert_equal '<li><a href="http://test.host/home"><span>Home</span></a></li>', @menu.html
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
class MenuWhenCurrentPageTest < Test::Unit::TestCase
|
253
|
+
def setup
|
254
|
+
super
|
255
|
+
|
256
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
257
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :contact)
|
258
|
+
end
|
259
|
+
|
260
|
+
def test_should_be_selected
|
261
|
+
assert @menu.selected?
|
262
|
+
end
|
263
|
+
|
264
|
+
def test_should_include_selected_css_class_in_html
|
265
|
+
assert_equal '<li class="menubar-selected"><a href="http://test.host/contact"><span>Contact</span></a></li>', @menu.html
|
266
|
+
end
|
267
|
+
|
268
|
+
def test_should_append_selected_class_if_class_attribute_already_exists
|
269
|
+
@menu[:class] = 'pretty'
|
270
|
+
assert_equal '<li class="pretty menubar-selected"><a href="http://test.host/contact"><span>Contact</span></a></li>', @menu.html
|
271
|
+
end
|
272
|
+
|
273
|
+
def test_should_allow_selected_class_to_be_customized
|
274
|
+
@original_selected_class = PluginAWeek::MenuHelper::Menu.selected_class
|
275
|
+
PluginAWeek::MenuHelper::Menu.selected_class = 'menubar-active'
|
276
|
+
assert_equal '<li class="menubar-active"><a href="http://test.host/contact"><span>Contact</span></a></li>', @menu.html
|
277
|
+
ensure
|
278
|
+
PluginAWeek::MenuHelper::Menu.selected_class = @original_selected_class
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
282
|
+
class MenuWithoutSubmenusTest < Test::Unit::TestCase
|
283
|
+
def setup
|
284
|
+
super
|
285
|
+
|
286
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
287
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home)
|
288
|
+
end
|
289
|
+
|
290
|
+
def test_should_not_render_a_menu_bar
|
291
|
+
assert_equal '<li><a href="http://test.host/home"><span>Home</span></a></li>', @menu.html
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
class MenuWithSubmenusTest < Test::Unit::TestCase
|
296
|
+
def setup
|
297
|
+
super
|
298
|
+
|
299
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
300
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home) do |home|
|
154
301
|
home.menu :about_us do |about_us|
|
155
|
-
about_us.menu :
|
302
|
+
about_us.menu :who_we_are
|
156
303
|
end
|
157
304
|
end
|
158
|
-
|
305
|
+
end
|
306
|
+
|
307
|
+
def test_should_render_a_menu_bar
|
159
308
|
expected = <<-eos
|
160
|
-
<li
|
161
|
-
<ul
|
162
|
-
<li class="
|
163
|
-
<ul
|
164
|
-
<li class="
|
309
|
+
<li><a href="http://test.host/home"><span>Home</span></a>
|
310
|
+
<ul class="menubar menubar-2">
|
311
|
+
<li class="menubar-last"><a href="http://test.host/about_us"><span>About Us</span></a>
|
312
|
+
<ul class="menubar menubar-3">
|
313
|
+
<li class="menubar-last"><a href="http://test.host/about_us/who_we_are"><span>Who We Are</span></a></li>
|
165
314
|
</ul>
|
166
315
|
</li>
|
167
316
|
</ul>
|
168
317
|
</li>
|
169
318
|
eos
|
170
|
-
assert_equal expected.gsub(/\n\s*/, ''), menu.html
|
319
|
+
assert_equal expected.gsub(/\n\s*/, ''), @menu.html
|
320
|
+
end
|
321
|
+
end
|
322
|
+
|
323
|
+
class MenuUnselectedWithDetachedActiveSubmenusTest < Test::Unit::TestCase
|
324
|
+
def setup
|
325
|
+
super
|
326
|
+
|
327
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller, :attach_active_submenus => false)
|
328
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :home) do |home|
|
329
|
+
home.menu :about_us
|
330
|
+
end
|
171
331
|
end
|
172
332
|
|
173
|
-
|
174
|
-
|
175
|
-
|
333
|
+
def test_should_render_a_menu_bar
|
334
|
+
expected = <<-eos
|
335
|
+
<li><a href="http://test.host/home"><span>Home</span></a>
|
336
|
+
<ul class="menubar menubar-2">
|
337
|
+
<li class="menubar-last"><a href="http://test.host/about_us"><span>About Us</span></a></li>
|
338
|
+
</ul>
|
339
|
+
</li>
|
340
|
+
eos
|
341
|
+
assert_equal expected.gsub(/\n\s*/, ''), @menu.html
|
342
|
+
end
|
343
|
+
|
344
|
+
def test_should_not_store_a_menu_bar_in_content_variable
|
345
|
+
assert !@controller.instance_variable_defined?('@content_for_menu_bar_level_2')
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
class MenuSelectedWithDetachedActiveSubmenusTest < Test::Unit::TestCase
|
350
|
+
def setup
|
351
|
+
super
|
352
|
+
|
353
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller, :attach_active_submenus => false)
|
354
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :contact) do |contact|
|
355
|
+
contact.menu :investors
|
176
356
|
end
|
357
|
+
end
|
358
|
+
|
359
|
+
def test_should_not_render_a_menu_bar
|
360
|
+
assert_equal '<li class="menubar-selected"><a href="http://test.host/contact"><span>Contact</span></a></li>', @menu.html
|
361
|
+
end
|
362
|
+
|
363
|
+
def test_should_store_a_menu_bar_in_content_variable
|
364
|
+
# Generate the html to store it in the variable
|
365
|
+
@menu.html
|
366
|
+
|
367
|
+
expected = <<-eos
|
368
|
+
<ul class="menubar menubar-2">
|
369
|
+
<li class="menubar-last"><a href="http://test.host/contact/investors"><span>Investors</span></a></li>
|
370
|
+
</ul>
|
371
|
+
eos
|
372
|
+
assert_equal expected.gsub(/\n\s*/, ''), @controller.instance_variable_get('@content_for_menu_bar_level_2')
|
373
|
+
end
|
374
|
+
end
|
375
|
+
|
376
|
+
class MenuWithSubmenuAsCurrentPageTest < Test::Unit::TestCase
|
377
|
+
def setup
|
378
|
+
super
|
379
|
+
|
380
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
381
|
+
@menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :about_us) do |about_us|
|
382
|
+
about_us.menu :contact
|
383
|
+
end
|
384
|
+
end
|
385
|
+
|
386
|
+
def test_should_be_selected
|
387
|
+
assert @menu.selected?
|
388
|
+
end
|
389
|
+
|
390
|
+
def test_should_include_selected_css_class_in_html
|
391
|
+
expected = <<-eos
|
392
|
+
<li class="menubar-selected"><a href="http://test.host/about_us"><span>About Us</span></a>
|
393
|
+
<ul class="menubar menubar-2 menubar-selected">
|
394
|
+
<li class="menubar-selected menubar-last"><a href="http://test.host/contact"><span>Contact</span></a></li>
|
395
|
+
</ul>
|
396
|
+
</li>
|
397
|
+
eos
|
398
|
+
assert_equal expected.gsub(/\n\s*/, ''), @menu.html
|
399
|
+
end
|
400
|
+
end
|
401
|
+
|
402
|
+
class MenuWithParentMenuTest < Test::Unit::TestCase
|
403
|
+
def setup
|
404
|
+
super
|
405
|
+
|
406
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
407
|
+
@parent_menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :contact, {}, :id => 'contact')
|
408
|
+
@menu = @parent_menu.menu :investors
|
409
|
+
end
|
410
|
+
|
411
|
+
def test_should_have_a_parent_menu
|
412
|
+
assert_equal @parent_menu, @menu.parent_menu
|
413
|
+
end
|
414
|
+
|
415
|
+
def test_should_prefix_menu_id_with_parent_menu_id
|
416
|
+
assert_equal 'contact-investors', @menu[:id]
|
417
|
+
end
|
418
|
+
end
|
419
|
+
|
420
|
+
class MenuWithParentMenuAndMatchingNamedRouteTest < Test::Unit::TestCase
|
421
|
+
def setup
|
422
|
+
super
|
423
|
+
|
424
|
+
ActionController::Routing::Routes.draw do |map|
|
425
|
+
map.contact_investors 'contact/investors', :controller => 'contact', :action => 'investors'
|
426
|
+
map.connect ':controller/:action/:id'
|
427
|
+
end
|
428
|
+
|
429
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
430
|
+
@parent_menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :contact)
|
431
|
+
@menu = @parent_menu.menu :investors
|
432
|
+
end
|
433
|
+
|
434
|
+
def test_should_build_url_from_named_route
|
435
|
+
expected = {:controller => 'contact', :action => 'investors', :only_path => false, :use_route => :contact_investors}
|
436
|
+
assert_equal expected, @menu.url_options
|
437
|
+
end
|
438
|
+
end
|
439
|
+
|
440
|
+
class MenuWithParentMenuAndMatchingControllerTest < Test::Unit::TestCase
|
441
|
+
def setup
|
442
|
+
super
|
443
|
+
|
444
|
+
@menu_bar = PluginAWeek::MenuHelper::MenuBar.new(@controller)
|
445
|
+
@parent_menu = PluginAWeek::MenuHelper::Menu.new(@menu_bar, :contact)
|
446
|
+
@menu = @parent_menu.menu :investors
|
447
|
+
end
|
448
|
+
|
449
|
+
def test_should_use_parent_controller_as_controller
|
450
|
+
expected = {:controller => 'contact', :action => 'investors', :only_path => false}
|
451
|
+
assert_equal expected, @menu.url_options
|
452
|
+
end
|
177
453
|
end
|