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.
@@ -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
@@ -12,7 +12,7 @@ module MenuMaker
12
12
  suppliers_li_class: 'dropdown'
13
13
  )
14
14
 
15
- assert_equal example_menu('/cms/dashboard').render, expected_output
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, expected_output
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, expected_output
33
+ assert_equal expected_output, example_menu('/cms/suppliers').render
34
34
  end
35
35
  end
36
36
  end
@@ -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 = "<a href=\"#{item.path}\">#{item}</a>"
9
- html + "<li>#{link}#{item.render_submenu}</li>"
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 = "<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>"
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 = "<ul><li><a href=\"/some/path\">First link</a>#{submenu}</li></ul>"
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
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-06-29 00:00:00.000000000 Z
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