menu_maker 0.0.4 → 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.
@@ -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