menu_maker 0.0.4 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/menu_maker/menu.rb +43 -18
- data/lib/menu_maker/version.rb +1 -1
- data/test/dummy/log/test.log +3219 -0
- data/test/menu_item_test.rb +83 -0
- data/test/menu_maker_test.rb +3 -3
- data/test/menu_renderer_test.rb +5 -5
- metadata +4 -2
@@ -0,0 +1,83 @@
|
|
1
|
+
module MenuMaker
|
2
|
+
class MenuItemTest < ActionView::TestCase
|
3
|
+
test 'hash options can be accessed as methods on MenuItem' do
|
4
|
+
item = Menu::MenuItem.new 'My title', 'my/path', from_hash: 'option'
|
5
|
+
assert_equal 'option', item.from_hash
|
6
|
+
end
|
7
|
+
|
8
|
+
test 'path returns the first path from the menu item' do
|
9
|
+
item = Menu::MenuItem.new 'My title', 'my/path'
|
10
|
+
assert_equal 'my/path', item.path
|
11
|
+
end
|
12
|
+
|
13
|
+
test 'submenu_paths returns submenu paths recursively' do
|
14
|
+
item = Menu::MenuItem.new 'Level 1', 'level/1'
|
15
|
+
|
16
|
+
menu2 = Menu.new(->(){})
|
17
|
+
menu2.add 'Level 2', 'level/2' do |menu3|
|
18
|
+
menu3.add 'Level 3', 'level/3'
|
19
|
+
menu3.add 'Level 4', 'level/4' do |menu4|
|
20
|
+
menu4.add 'Level 6', 'level/6'
|
21
|
+
end
|
22
|
+
menu3.add 'Level 5', 'level/5'
|
23
|
+
end
|
24
|
+
menu2.add 'Level 2/1', 'level/2/1'
|
25
|
+
menu2.add 'Level 2/2', 'level/2/2'
|
26
|
+
|
27
|
+
item.submenu = menu2
|
28
|
+
|
29
|
+
expected = %w[level/2 level/2/1 level/2/2 level/3 level/4 level/5 level/6]
|
30
|
+
|
31
|
+
assert_equal expected, item.submenu_paths.sort
|
32
|
+
end
|
33
|
+
|
34
|
+
test 'all_paths returns submenu paths + current menu path' do
|
35
|
+
item = Menu::MenuItem.new 'Level 1', 'level/1'
|
36
|
+
|
37
|
+
menu2 = Menu.new(->(){})
|
38
|
+
menu2.add 'Level 2', 'level/2' do |menu3|
|
39
|
+
menu3.add 'Level 3', 'level/3'
|
40
|
+
menu3.add 'Level 4', 'level/4' do |menu4|
|
41
|
+
menu4.add 'Level 6', 'level/6'
|
42
|
+
end
|
43
|
+
menu3.add 'Level 5', 'level/5'
|
44
|
+
end
|
45
|
+
|
46
|
+
item.submenu = menu2
|
47
|
+
|
48
|
+
expected = %w[level/1 level/2 level/3 level/4 level/5 level/6]
|
49
|
+
|
50
|
+
assert_equal expected, item.all_paths.sort
|
51
|
+
end
|
52
|
+
|
53
|
+
test 'has_path? also checks for submenus' do
|
54
|
+
item = Menu::MenuItem.new 'Level 1', 'level/1'
|
55
|
+
|
56
|
+
menu2 = Menu.new(->(){})
|
57
|
+
menu2.add 'Level 2', 'level/2' do |menu3|
|
58
|
+
menu3.add 'Level 3', 'level/3'
|
59
|
+
menu3.add 'Level 4', 'level/4' do |menu4|
|
60
|
+
menu4.add 'Level 6', 'level/6'
|
61
|
+
end
|
62
|
+
menu3.add 'Level 5', 'level/5'
|
63
|
+
end
|
64
|
+
|
65
|
+
item.submenu = menu2
|
66
|
+
|
67
|
+
assert item.has_path?('level/4')
|
68
|
+
assert item.has_path?('level/1')
|
69
|
+
refute item.has_path?('level/8')
|
70
|
+
end
|
71
|
+
|
72
|
+
test "has_submenu? when returns false" do
|
73
|
+
item = Menu::MenuItem.new 'Level 1', 'level/1'
|
74
|
+
refute item.has_submenu?
|
75
|
+
end
|
76
|
+
|
77
|
+
test "has_submenu? when returns true" do
|
78
|
+
item = Menu::MenuItem.new 'Level 1', 'level/1'
|
79
|
+
item.submenu = Menu.new(->(){})
|
80
|
+
assert item.has_submenu?
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
data/test/menu_maker_test.rb
CHANGED
@@ -12,7 +12,7 @@ module MenuMaker
|
|
12
12
|
suppliers_li_class: 'dropdown'
|
13
13
|
)
|
14
14
|
|
15
|
-
assert_equal example_menu('/cms/dashboard').render
|
15
|
+
assert_equal expected_output, example_menu('/cms/dashboard').render
|
16
16
|
end
|
17
17
|
|
18
18
|
test 'outputs the menu with the first li submenu item active' do
|
@@ -21,7 +21,7 @@ module MenuMaker
|
|
21
21
|
add_supplier_class: 'active'
|
22
22
|
)
|
23
23
|
|
24
|
-
assert_equal example_menu('/cms/suppliers/new').render
|
24
|
+
assert_equal expected_output, example_menu('/cms/suppliers/new').render
|
25
25
|
end
|
26
26
|
|
27
27
|
test 'outputs the menu with the second li submenu item selected' do
|
@@ -30,7 +30,7 @@ module MenuMaker
|
|
30
30
|
list_supplier_class: 'active'
|
31
31
|
)
|
32
32
|
|
33
|
-
assert_equal example_menu('/cms/suppliers').render
|
33
|
+
assert_equal expected_output, example_menu('/cms/suppliers').render
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
data/test/menu_renderer_test.rb
CHANGED
@@ -5,8 +5,8 @@ module MenuMaker
|
|
5
5
|
def proc_renderer
|
6
6
|
proc do |menu|
|
7
7
|
items = menu.inject('') do |html, item|
|
8
|
-
link =
|
9
|
-
html +
|
8
|
+
link = %{<a href="#{item.path}">#{item}</a>}
|
9
|
+
html + %{<li>#{link}#{item.render_submenu}</li>}
|
10
10
|
end
|
11
11
|
|
12
12
|
"<ul>#{items}</ul>"
|
@@ -31,8 +31,8 @@ module MenuMaker
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
submenu =
|
35
|
-
expected =
|
34
|
+
submenu = %{<ul><li><a href="/some/path/new">First sublink</a></li></ul>}
|
35
|
+
expected = %{<ul><li><a href="/some/path">First link</a>#{submenu}</li></ul>}
|
36
36
|
|
37
37
|
assert_equal expected, menu_maker.render
|
38
38
|
end
|
@@ -54,7 +54,7 @@ module MenuMaker
|
|
54
54
|
end
|
55
55
|
|
56
56
|
submenu = "<ul><li>Static</li></ul>"
|
57
|
-
expected =
|
57
|
+
expected = %{<ul><li><a href="/some/path">First link</a>#{submenu}</li></ul>}
|
58
58
|
|
59
59
|
assert_equal expected, menu_maker.render
|
60
60
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: menu_maker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thiago A. Silva
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -97,6 +97,7 @@ files:
|
|
97
97
|
- test/fixtures/menu.html
|
98
98
|
- test/helpers/menu_maker/menu_helper_test.rb
|
99
99
|
- test/integration_test_helper.rb
|
100
|
+
- test/menu_item_test.rb
|
100
101
|
- test/menu_maker_test.rb
|
101
102
|
- test/menu_renderer_test.rb
|
102
103
|
- test/test_helper.rb
|
@@ -163,6 +164,7 @@ test_files:
|
|
163
164
|
- test/fixtures/menu.html
|
164
165
|
- test/helpers/menu_maker/menu_helper_test.rb
|
165
166
|
- test/integration_test_helper.rb
|
167
|
+
- test/menu_item_test.rb
|
166
168
|
- test/menu_maker_test.rb
|
167
169
|
- test/menu_renderer_test.rb
|
168
170
|
- test/test_helper.rb
|