diff --git a/lib/semantic_menu.rb b/lib/semantic_menu.rb index 7d77609..049c656 100644 --- a/lib/semantic_menu.rb +++ b/lib/semantic_menu.rb @@ -6,7 +6,7 @@ class MenuItem include ActionView::Helpers::TagHelper, ActionView::Helpers::UrlHelper - attr_accessor :children, :link + attr_accessor :children, :link, :active cattr_accessor :controller def initialize(title, link, level, link_opts={}) @@ -34,7 +34,7 @@ def child_output end def active? - children.any?(&:active?) || on_current_page? + self.active || children.any?(&:active?) || on_current_page? end def on_current_page? diff --git a/test/semantic_menu_test.rb b/test/semantic_menu_test.rb index e0b6e6a..b62a744 100644 --- a/test/semantic_menu_test.rb +++ b/test/semantic_menu_test.rb @@ -24,6 +24,18 @@ def test_menu_item_passes_options_to_link MenuItem.new("title", "link", 2, :class => 'button').to_s end + def test_force_active_state + MenuItem.any_instance.stubs(:on_current_page?).returns(false) + + menu = SemanticMenu.new nil, :class => 'mymenu' do |root| + root.add 'title', 'link' do |links| + links.active = true + end + end + + assert_equal '', menu.to_s + end + def test_menu_item_with_one_child MenuItem.any_instance.stubs(:active?).returns(false) assert_equal '', default_menu.to_s