docs
[sinatra.git] / test / sinatra / renderer_test.rb
blob51abe066877743bc24d24384074ee32077b46eae
1 require File.dirname(__FILE__) + '/../helper'
3 class Sinatra::EventContext # :nodoc:
5   def render_foo(template)
6     require 'erb'
7     ERB.new(template).result(binding)
8   end
9   
10 end
12 describe "Renderer" do
14   before(:each) do
15     Layouts.clear
16     @context = Sinatra::EventContext.new(stub())
17   end
19   it "should render render a tempalate" do
20     @context.render('foo', :foo).should.equal 'foo'
21   end
22   
23   it "should render with a layout if given" do
24     result = @context.render('content', :foo) do
25       'X <%= yield %> X'
26     end
27     
28     result.should.equal 'X content X'
29   end
30   
31   it "should render default layout if it exists and layout if no layout name given" do
32     Layouts[:layout] = 'X <%= yield %> Y'
33     @context.render('foo', :foo).should.equal 'X foo Y'
34     
35     Layouts[:foo] = 'Foo <%= yield %> Layout'
36     @context.render('bar', :foo, :layout => :foo).should.equal 'Foo bar Layout'
37   end
38   
39   it "should read template from a file if exists" do
40     File.expects(:read).with('views/bar.foo').returns('foo content')
41     @context.render(:bar, :foo).should.equal 'foo content'
42     
43     File.expects(:read).with('views2/bar.foo').returns('foo content')
44     @context.render(:bar, :foo, :views_directory => 'views2').should.equal 'foo content'
45   end
46     
47 end