1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
require 'helper'
class TestLibrary < MINITEST_TEST_CLASS
RablRails::Library.send(:attr_reader, :cached_templates)
describe 'library' do
before do
@library = RablRails::Library.instance
@library.reset_cache!
@context = Context.new
@template = RablRails::CompiledTemplate.new
end
describe '#get_rendered_template' do
it 'compiles and renders template' do
renderer = MiniTest::Mock.new
renderer.expect :render, '{}', [@template, @context, nil]
result = @library.stub :compile_template_from_source, @template do
RablRails::Renderers.stub :const_get, renderer do
@library.get_rendered_template '', @context
end
end
assert_equal '{}', result
assert renderer.verify
end
it 'accepts format as string' do
result = @library.stub :compile_template_from_source, @template do
@context.stub :params, { format: 'xml' } do
RablRails::Renderers::XML.stub :render, '<xml>' do
@library.get_rendered_template '', @context
end
end
end
assert_equal '<xml>', result
end
it 'accepts format as symbol' do
result = @library.stub :compile_template_from_source, @template do
@context.stub :params, { format: :plist } do
RablRails::Renderers::PLIST.stub :render, '<plist>' do
@library.get_rendered_template '', @context
end
end
end
assert_equal '<plist>', result
end
end
describe '#compile_template_from_source' do
it 'compiles a template' do
compiler = MiniTest::Mock.new
compiler.expect :compile_source, @template, ['attribute :id']
result = RablRails::Compiler.stub :new, compiler do
@library.compile_template_from_source('attribute :id', @context)
end
assert_equal @template, result
end
it 'caches compiled template if option is set' do
@context.virtual_path = 'users/base'
template = with_configuration :cache_templates, true do
@library.compile_template_from_source("attribute :id", @context)
end
assert_equal(template, @library.cached_templates['users/base'])
end
it 'compiles source without caching it if options is not set' do
@context.virtual_path = 'users/base'
template = with_configuration :cache_templates, false do
@library.compile_template_from_source("attribute :id", @context)
end
assert_empty @library.cached_templates
end
end
end
end
|