engine/spec/lib/locomotive/liquid/tags/nav_spec.rb

50 lines
2.2 KiB
Ruby
Raw Normal View History

require 'spec_helper'
describe Locomotive::Liquid::Tags::Nav do
before(:each) do
@home = Factory.build(:page)
@home.stubs(:children).returns([
Page.new(:title => 'Child #1', :fullpath => 'child_1', :slug => 'child_1'),
Page.new(:title => 'Child #2', :fullpath => 'child_2', :slug => 'child_2')
])
@home.children.last.stubs(:children).returns([
Page.new(:title => 'Child #2.1', :fullpath => 'child_2/sub_child_1', :slug => 'sub_child_1'),
Page.new(:title => 'Child #2.2', :fullpath => 'child_2/sub_child_2', :slug => 'sub_child_2')
])
@site = Factory.build(:site)
@site.stubs(:pages).returns([@home])
end
context '#rendering' do
it 'renders from site' do
render_nav.should == '<ul id="nav"><li id="child-1" class="link"><a href="/child_1">Child #1</a></li><li id="child-2" class="link"><a href="/child_2">Child #2</a></li></ul>'
end
it 'renders from page' do
(page = @home.children.last.children.first).stubs(:parent).returns(@home.children.last)
output = render_nav 'page', { :page => page }
output.should == '<ul id="nav"><li id="sub-child-1" class="link on"><a href="/child_2/sub_child_1">Child #2.1</a></li><li id="sub-child-2" class="link"><a href="/child_2/sub_child_2">Child #2.2</a></li></ul>'
end
it 'adds an icon before the link' do
render_nav('site', {}, 'icon: true').should match /<li id="child-1" class="link"><a href="\/child_1"><span><\/span>Child #1<\/a>/
render_nav('site', {}, 'icon: before').should match /<li id="child-1" class="link"><a href="\/child_1"><span><\/span>Child #1<\/a>/
end
it 'adds an icon after the link' do
render_nav('site', {}, 'icon: after').should match /<li id="child-1" class="link"><a href="\/child_1">Child #1<span><\/span><\/a><\/li>/
end
end
def render_nav(source = 'site', registers = {}, template_option = '')
registers = { :site => @site, :page => @home }.merge(registers)
liquid_context = ::Liquid::Context.new({}, registers)
output = Liquid::Template.parse("{% nav #{source} #{template_option} %}").render(liquid_context)
output.gsub(/\n\s{0,}/, '')
end
end