require 'spec/helper' Innate.options.merge!(:views => 'view', :layouts => 'view') class SpecNode Innate.node('/') def foo; end def bar; end def one(arg) end def two(arg1, arg2) end def more(*args) end def default(arg = nil) end end class SpecNodeProvide Innate.node('/provide') def foo '#{21 * 2}' end def bar '#{84 / 2}' end end class SpecNodeProvideTemplate Innate.node('/provide_template') map_views '/' end class SpecNodeSub < SpecNode map '/sub' def bar(arg) end end class SpecNodeWithLayout < SpecNodeProvide map '/layout' layout 'with_layout' map_layouts '/' end class SpecNodeWithLayoutView < SpecNodeProvide map '/another_layout' layout 'another_layout' map_views 'node/another_layout' map_layouts 'another_layout' end class SpecNodeWithLayoutMethod < SpecNodeProvide map '/layout_method' layout 'layout_method' def layout_method '
#{@content}
' end end class SpecNodeIndex Innate.node('/spec_index') def index "I have no parameters" end end class SpecNodeAliasView < SpecNodeProvideTemplate map '/alias_view' map_views '/' alias_view :aliased, :bar end describe 'Innate::Node' do behaves_like :rack_test should 'respond with 404 if no action was found' do got = Innate::Mock.get('/does_not_exist') got.status.should == 404 got.body.should == 'No action found at: "/does_not_exist"' got['Content-Type'].should == 'text/plain' end should 'wrap with layout' do got = Innate::Mock.get('/layout/bar') got.status.should == 200 got.body.should == %(
42
) got['Content-Type'].should == 'text/html' end should 'find layout with view_root' do got = Innate::Mock.get('/another_layout/bar') got.status.should == 200 got.body.should == %(
\n 42\n
) got['Content-Type'].should == 'text/html' end should 'find layout from method' do got = Innate::Mock.get('/layout_method/bar') got.status.should == 200 got.body.should == %(
42
) got['Content-Type'].should == 'text/html' end should 'not get an action with wrong parameters' do got = Innate::Mock.get('/spec_index/bar') got.status.should == 404 got.body.should == 'No action found at: "/bar"' end should 'get an action view if there is no method' do got = Innate::Mock.get('/provide_template/only_view') got.status.should == 200 got.body.strip.should == "Only template" got['Content-Type'].should == 'text/html' end should 'not get an action view with params if there is no method' do got = Innate::Mock.get('/provide_template/only_view/param') got.status.should == 404 got.body.strip.should == 'No action found at: "/only_view/param"' end should 'use alias_view' do got = get('/alias_view/aliased') got.status.should == 200 got.body.strip.should == "

Hello, World!

" got['Content-Type'].should == 'text/html' end end