menu_builder 0.3.3 → 0.4.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/VERSION +1 -1
- data/lib/menu_builder/controller.rb +9 -4
- data/lib/menu_builder/helper.rb +4 -6
- data/menu_builder.gemspec +2 -2
- data/test/controller_test.rb +22 -13
- data/test/helper_test.rb +39 -10
- data/test/test_helper.rb +2 -2
- metadata +5 -5
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
@@ -2,16 +2,21 @@ module MenuBuilder
|
|
2
2
|
module Controller
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
-
def
|
6
|
-
instance_variable_set('@
|
5
|
+
def menu_items(*items)
|
6
|
+
instance_variable_set('@menu_items', items)
|
7
7
|
end
|
8
|
+
alias_method :menu_item, :menu_items
|
8
9
|
|
9
10
|
module ClassMethods
|
10
|
-
def
|
11
|
+
def menu_items(*items)
|
12
|
+
options = items.extract_options!
|
13
|
+
|
11
14
|
before_filter(options) do |controller|
|
12
|
-
controller.instance_variable_set('@
|
15
|
+
controller.instance_variable_set('@menu_items', items)
|
13
16
|
end
|
14
17
|
end
|
18
|
+
alias_method :menu_item, :menu_items
|
19
|
+
|
15
20
|
end
|
16
21
|
|
17
22
|
end
|
data/lib/menu_builder/helper.rb
CHANGED
@@ -1,21 +1,19 @@
|
|
1
1
|
module MenuBuilder
|
2
2
|
module ViewHelpers
|
3
3
|
class Menu
|
4
|
-
|
5
4
|
def initialize(context)
|
6
5
|
@context = context
|
7
|
-
@
|
6
|
+
@menu_items = @context.instance_variable_get('@menu_items')
|
8
7
|
end
|
9
8
|
|
10
|
-
def
|
11
|
-
@
|
9
|
+
def included_in_current_items?(item)
|
10
|
+
@menu_items.present? && @menu_items.include?(item.to_sym)
|
12
11
|
end
|
13
12
|
|
14
13
|
def method_missing(item, *args, &block)
|
15
|
-
css_class = "current" if
|
14
|
+
css_class = "current" if included_in_current_items? item
|
16
15
|
@context.content_tag :li, @context.link_to(*args, &block), :class=>css_class
|
17
16
|
end
|
18
|
-
|
19
17
|
end
|
20
18
|
|
21
19
|
def menu(options={}, &block)
|
data/menu_builder.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{menu_builder}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Daniel Lopes"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-10-10}
|
13
13
|
s.description = %q{ helper and controller macros to define current menu item and also create the menu in view. }
|
14
14
|
s.email = %q{danielvlopes@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/test/controller_test.rb
CHANGED
@@ -7,26 +7,35 @@ class ActiveSupport::TestCase
|
|
7
7
|
end
|
8
8
|
|
9
9
|
class BooksController < ApplicationController
|
10
|
-
menu_item :
|
10
|
+
menu_item :books
|
11
|
+
def index ; end
|
12
|
+
end
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
def
|
16
|
-
|
14
|
+
class SettingsController < ApplicationController
|
15
|
+
menu_items :settings, :home
|
16
|
+
|
17
|
+
def index ; end
|
18
|
+
|
19
|
+
def notifications
|
20
|
+
menu_item :notification
|
17
21
|
end
|
18
22
|
end
|
19
23
|
|
20
|
-
class
|
21
|
-
|
24
|
+
class BooksControllerTest < ActionController::TestCase
|
25
|
+
test "assigns the current tab" do
|
26
|
+
get :index
|
27
|
+
assert_equal([:books], assigns(:menu_items))
|
28
|
+
end
|
29
|
+
end
|
22
30
|
|
23
|
-
|
31
|
+
class SettingsControllerTest < ActionController::TestCase
|
32
|
+
test "ability to assign more than one current tab" do
|
24
33
|
get :index
|
25
|
-
assert_equal(:home, assigns(:
|
34
|
+
assert_equal([:settings, :home], assigns(:menu_items))
|
26
35
|
end
|
27
36
|
|
28
|
-
test "
|
29
|
-
get :
|
30
|
-
assert_equal(:
|
37
|
+
test "that instance level menu_items override class level" do
|
38
|
+
get :notifications
|
39
|
+
assert_equal([:notification], assigns(:menu_items))
|
31
40
|
end
|
32
41
|
end
|
data/test/helper_test.rb
CHANGED
@@ -3,6 +3,8 @@ require "test_helper"
|
|
3
3
|
class HelperTest < ActionView::TestCase
|
4
4
|
tests MenuBuilder::ViewHelpers
|
5
5
|
|
6
|
+
attr_accessor :controller, :request
|
7
|
+
|
6
8
|
test "menu yields an instance of Menu" do
|
7
9
|
concat(menu do |m|
|
8
10
|
assert m.instance_of?(MenuBuilder::ViewHelpers::Menu)
|
@@ -13,31 +15,58 @@ class HelperTest < ActionView::TestCase
|
|
13
15
|
concat(menu(:id => "menu") { |m| })
|
14
16
|
assert_select "ul#menu"
|
15
17
|
end
|
16
|
-
|
17
|
-
test "menu
|
18
|
+
|
19
|
+
test "menu accept html options like classes and id" do
|
18
20
|
concat(menu :id=>"menu", :class=>"tabs" do |m| end)
|
19
21
|
assert_select "ul#menu.tabs"
|
20
22
|
end
|
21
|
-
|
22
|
-
test "menu
|
23
|
+
|
24
|
+
test "menu create a line item" do
|
23
25
|
concat(menu { |m| concat m.home "Home", "#" })
|
24
26
|
assert_select "li", 1
|
25
27
|
end
|
26
|
-
|
27
|
-
test "
|
28
|
+
|
29
|
+
test "create a link inside line item" do
|
28
30
|
concat(menu { |m| concat m.home "Home", "/" })
|
29
31
|
expected = %(<ul><li><a href="/">Home</a></li></ul>)
|
30
32
|
assert_dom_equal expected, output_buffer
|
31
33
|
end
|
32
|
-
|
33
|
-
test "
|
34
|
-
@
|
34
|
+
|
35
|
+
test "set the class to the current item li" do
|
36
|
+
@menu_items = [:home]
|
35
37
|
concat(menu do |m|
|
36
38
|
concat m.home "Home", "/"
|
37
39
|
concat m.contact "Store", "/store"
|
38
40
|
end)
|
39
|
-
|
41
|
+
|
40
42
|
assert_select "li.current", 1
|
41
43
|
end
|
42
44
|
|
45
|
+
test "accept more than one menu item" do
|
46
|
+
@menu_items = [:settings, :notifications]
|
47
|
+
|
48
|
+
concat(menu do |m|
|
49
|
+
concat m.home "Home", "/"
|
50
|
+
concat m.notifications "Notifications", "/notifications"
|
51
|
+
concat m.settings "Settings", "/settings"
|
52
|
+
end)
|
53
|
+
|
54
|
+
assert_select "li.current", 2
|
55
|
+
end
|
56
|
+
|
57
|
+
test "accept more than one menu" do
|
58
|
+
@menu_items = [:settings, :notifications]
|
59
|
+
|
60
|
+
concat(menu do |m|
|
61
|
+
concat m.home "Home", "/"
|
62
|
+
concat m.notifications "Notifications", "/notifications"
|
63
|
+
end)
|
64
|
+
|
65
|
+
concat(menu do |m|
|
66
|
+
concat m.home "Contact", "/contact"
|
67
|
+
concat m.notifications "Settings", "/settings"
|
68
|
+
end)
|
69
|
+
|
70
|
+
assert_select "li.current", 2
|
71
|
+
end
|
43
72
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: menu_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 4
|
9
|
+
- 0
|
10
|
+
version: 0.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Daniel Lopes
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-10-10 00:00:00 -03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|