require 'spec_helper'
describe Spud::Cms::ApplicationHelper do
before(:each) do
ActiveRecord::Base.observers.disable(:page_sweeper)
Spud::Core.configure do |config|
config.site_name = "Test Site"
config.multisite_mode_enabled = false
config.multisite_config = []
end
end
describe :sp_list_menu do
it "should be able to find a menu by its name" do
menu = FactoryGirl.create(:spud_menu,:name => "Main")
2.times {|x| s = FactoryGirl.create(:spud_menu_item,:parent_id => menu.id,:spud_menu_id => menu.id,:url => "/")}
helper.sp_list_menu(:name => "Main",:active_class => "active").should match /\
menu.id,:spud_menu_id => menu.id,:url => "/")}
helper.sp_list_menu(:name => menu.name,:id => "nav").should match /id=\'nav\'/
end
it "should render nested menu items" do
menu = FactoryGirl.create(:spud_menu,:name => "Main2")
s = FactoryGirl.create(:spud_menu_item,:parent_id => menu.id,:spud_menu_id => menu.id,:url => "/")
s2 = FactoryGirl.create(:spud_menu_item,:parent_id => menu.id,:spud_menu_id => menu.id,:url => "/")
s3 = FactoryGirl.create(:spud_menu_item,:parent_type => "SpudMenuItem",:parent_id => s.id,:spud_menu_id => menu.id,:url => "/",:name => "SubItem")
helper.sp_list_menu(:name => "Main2").should match /SubItem/
end
it "should respect max depth" do
menu = FactoryGirl.create(:spud_menu,:name => "Main4")
s = FactoryGirl.create(:spud_menu_item,:parent_id => menu.id,:spud_menu_id => menu.id,:url => "/")
s2 = FactoryGirl.create(:spud_menu_item,:parent_id => menu.id,:spud_menu_id => menu.id,:url => "/")
s3 = FactoryGirl.create(:spud_menu_item,:parent_type => "SpudMenuItem",:parent_id => s.id,:spud_menu_id => menu.id,:url => "/",:name => "SubItem")
helper.sp_list_menu(:name => "Main4",:max_depth => 1).should_not match /SubItem/
end
it "should not load menu from different site_id" do
Spud::Core.configure do |config|
config.site_name = "Test Site"
config.multisite_mode_enabled = true
config.multisite_config = [{:hosts => ["test.host"], :site_name =>"Site B", :site_id => 1}]
end
menu = FactoryGirl.create(:spud_menu,:site_id => 0)
s = FactoryGirl.create(:spud_menu_item,:parent_id => menu.id,:spud_menu_id => menu.id,:url => "/")
helper.sp_list_menu(:name => menu.name).should be_blank
end
end
describe :sp_menu_with_seperator do
it "should render a flattened list of links" do
menu = FactoryGirl.create(:spud_menu,:name => "Main3")
s = FactoryGirl.create(:spud_menu_item,:parent_id => menu.id,:spud_menu_id => menu.id,:url => "/")
s2 = FactoryGirl.create(:spud_menu_item,:parent_id => menu.id,:spud_menu_id => menu.id,:url => "/")
s3 = FactoryGirl.create(:spud_menu_item,:parent_type => "SpudMenuItem",:parent_id => s.id,:spud_menu_id => menu.id,:url => "/",:name => "SubItem")
content = helper.sp_menu_with_seperator(:name => "Main3")
content.should match /SubItem/
content.should_not match /\ ["test.host"], :site_name =>"Site B", :site_id => 1}]
end
menu = FactoryGirl.create(:spud_menu,:site_id => 0)
s = FactoryGirl.create(:spud_menu_item,:parent_id => menu.id,:spud_menu_id => menu.id,:url => "/")
helper.sp_menu_with_seperator(:name => menu.name).should be_blank
end
end
describe :sp_list_pages do
it "should be able to list created pages" do
page = FactoryGirl.create(:spud_page)
page2 = FactoryGirl.create(:spud_page)
page3 = FactoryGirl.create(:spud_page,:spud_page_id => page.id)
content = helper.sp_list_pages(:active_class => "active")
content.should match /#{page.name}/
content.should match /#{page2.name}/
content.should match /#{page3.name}/
end
it "should assign id" do
page = FactoryGirl.create(:spud_page)
page2 = FactoryGirl.create(:spud_page)
content = helper.sp_list_pages(:id => "page_nav")
content.should match /id=\'page_nav\'/
end
it "should be able to exclude certain pages" do
page = FactoryGirl.create(:spud_page)
page2 = FactoryGirl.create(:spud_page)
content = helper.sp_list_pages(:exclude => [page2.name])
content.should match /#{page.name}/
content.should_not match /#{page2.name}/
end
it "should respect max depth" do
page = FactoryGirl.create(:spud_page)
page2 = FactoryGirl.create(:spud_page)
page3 = FactoryGirl.create(:spud_page,:spud_page_id => page.id)
content = helper.sp_list_pages(:max_depth => 1)
content.should match /#{page.name}/
content.should match /#{page2.name}/
content.should_not match /#{page3.name}/
end
it "should be able to list sub pages of a particular page" do
page = FactoryGirl.create(:spud_page)
page2 = FactoryGirl.create(:spud_page)
page3 = FactoryGirl.create(:spud_page,:spud_page_id => page.id)
content = helper.sp_list_pages(:start_page_id => page.id)
content.should_not match /#{page.name}/
content.should_not match /#{page2.name}/
content.should match /#{page3.name}/
end
it "should not load pages from different site_id" do
Spud::Core.configure do |config|
config.site_name = "Test Site"
config.multisite_mode_enabled = true
config.multisite_config = [{:hosts => ["test.host"], :site_name =>"Site B", :site_id => 1}]
end
page = FactoryGirl.create(:spud_page,:site_id => 0)
page2 = FactoryGirl.create(:spud_page,:site_id => 1)
content = helper.sp_list_pages()
content.should_not match /#{page.name}/
content.should match /#{page2.name}/
end
end
end