require 'spec_helper' describe InlineTemplates do describe 'render' do it 'builds elements' do test_rit do ~ span('test') end.should == "test" end it 'builds multiple elements' do test_rit do ~ span('test 1') ~ span('test 2') end.should == "test 1test 2" end it 'captures' do test_rit do ~ div do ~ span('test') end end.should == "
test
" end it 'handles locals and conditionals' do locals = { :cond => true, :a => 'foo', :b => 'bar' } test_block = proc do if cond ~ a else ~ b end end test_rit(locals, &test_block).should == "foo" locals[:cond] = false test_rit(locals, &test_block).should == "bar" end it 'supports response postprocessing' do test_rit do e1 = div 'foo' e2 = span 'bar' ~ (e1 + e2) end.should == "
foo
bar" end it 'properly handles nested blocks' do locals = { :list => [ '1', '2', '3', '4' ] } test_rit(locals) do ~ ul do list.each do |item| ~ li(item) end end end.should == '' end it 'implements t helper' do test_rit do ~ t('
') end.should == "<br />" end it 'implements h helper' do test_rit do ~ h('
') end.should == "
" end it 'passes instance variables' do test_rit do ~ @virtual_path end.should == "(inline)" end it 'wraps output of builders' do test_rit do ~ form_for(:foo, :url => "foo", :authenticity_token => false) do |f| ~ f.submit end end.should == "
" end it 'supports instance_exec of blocks' do test_class = Class.new do def initialize(template, &block) @template = template @buffer = "" instance_exec &block end def to_s @buffer.html_safe end def foo @buffer << "test" end def bar(&block) @buffer << @template.capture('foo', &block) end end test_rit do ~ invoke_helper_like_class(test_class) do foo bar do |arg| ~ strong(arg) end end end.to_s.should == 'testfoo' end end end