Files
cmtool/spec/cmtool_menu_spec.rb
T

122 lines
3.4 KiB
Ruby

require 'spec_helper'
describe Cmtool::Menu do
before :all do
@base_block = Cmtool::Menu.registrations.first
end
before :each do
Cmtool::Menu.reset!
Cmtool::Menu.register &@base_block
end
describe Cmtool::Menu::ElementBase do
it "should return false on specific element inquiry" do
base_element = Cmtool::Menu::ElementBase.new
element_names = Cmtool::Menu::ElementBase.subclasses.map{|e| e.name.sub(/.*::/, '').underscore }
for element_name in element_names
base_element.send("#{element_name}?").should be_false
end
end
end
describe Cmtool::Menu::Group do
it "should identify itself as such" do
Cmtool::Menu::Group.new.group?.should be_true
end
it "should not identify as resource link" do
Cmtool::Menu::Group.new.resource_link?.should be_false
end
end
describe Cmtool::Menu::ResourceLink do
it "should identify itself as such" do
Cmtool::Menu::ResourceLink.new(User).resource_link?.should be_true
end
end
describe :items do
it "should return an array" do
Cmtool::Menu.items.should be_a Array
end
it "should return an array of 5" do
Cmtool::Menu.items.size.should == 5
end
it "should have publications as second item" do
Cmtool::Menu.items[1].options[:label].should == :publications
end
it "should have three publications item by default" do
Cmtool::Menu.items[1].items.size.should == 3
end
end
describe 'New register block' do
before :each do
Cmtool::Menu.register do
before :users do
resource_link Page, scope: Cmtool
end
after :publications do
resource_link Cmtool::Image
end
append_to :publications do
resource_link Cmtool::Directory
end
end
end
it "should have 7 items now" do
Cmtool::Menu.items.size.should == 7
end
it "should have pages as second last items argument" do
second_last = Cmtool::Menu.items[-2]
second_last.should be_a Cmtool::Menu::ResourceLink
second_last.resource.should == Page
end
it "should fall back to normal behaviour when no menu item specified is found" do
Cmtool::Menu.reset!
Cmtool::Menu.register do
append_to :publications do
resource_link Cmtool::Directory
end
end
Cmtool::Menu.items.size.should == 1
end
it "should have added a divider and a link to publications" do
Cmtool::Menu.items[1].items.size.should == 5
end
it "should not add a divider when skip_divider option is given" do
Cmtool::Menu.reset!
Cmtool::Menu.register &@base_block
Cmtool::Menu.register do
append_to :publications, skip_divider: true do
resource_link Cmtool::Directory
end
end
Cmtool::Menu.items[1].items.size.should == 4
end
end
describe 'Engine Link' do
before do
Cmtool::Menu.register do
engine_link Cmtool::Engine
end
end
it 'Should add a engine link' do
Cmtool::Menu.items.last.engine_link?.should be_true
end
it 'Should not identify as a resource link' do
Cmtool::Menu.items.last.resource_link?.should be_false
end
it 'should set the path when given as symbol' do
Cmtool::Menu.register do
engine_link Cmtool::Engine, path: :news_index
end
Cmtool::Menu.items.last.path.should == '/cmtool/news'
end
end
end