test/unit/source_tests.rb in deas-erubis-0.3.0 vs test/unit/source_tests.rb in deas-erubis-0.4.0

- old
+ new

@@ -33,11 +33,11 @@ @source = @source_class.new(@root, {}) end subject{ @source } should have_readers :root, :eruby_class, :cache, :context_class - should have_imeths :render, :compile, :eruby + should have_imeths :render, :compile, :template should "know its root" do assert_equal @root, subject.root.to_s end @@ -49,19 +49,17 @@ eruby = 'some-eruby-class' source = @source_class.new(@root, :eruby => eruby) assert_equal eruby, source.eruby_class end - should "build eruby instances for a given template file" do - assert_kind_of subject.eruby_class, subject.eruby('basic', Factory.string) - end + should "build template objects for template files" do + filename = 'basic' + template = subject.template(filename, Factory.string) - should "build its eruby instances with the correct bufvar name" do - eruby = subject.eruby('basic', Factory.string) - - exp = Deas::Erubis::Source::BUFVAR_NAME - assert_equal exp, eruby.instance_variable_get('@bufvar') + assert_equal filename, template.filename + assert_equal subject.eruby_class, template.eruby_class + assert_equal Deas::Erubis::Source::BUFVAR_NAME, template.eruby_bufvar end should "not cache templates by default" do assert_kind_of NullCache, subject.cache end @@ -79,16 +77,29 @@ assert_includes Deas::Erubis::TemplateHelpers, subject.context_class context = subject.context_class.new('deas-source', {}) assert_responds_to :partial, context assert_responds_to :capture_partial, context + assert_responds_to :source_partial, context + assert_responds_to :source_capture_partial, context end + should "mixin custom template helpers to its context class" do + source = @source_class.new(@root, :helpers => SomeCustomHelpers) + assert_includes SomeCustomHelpers, source.context_class + + source = @source_class.new(@root, :helpers => [SomeCustomHelpers]) + assert_includes SomeCustomHelpers, source.context_class + + context = source.context_class.new('deas-source', {}) + assert_responds_to :a_custom_method, context + end + should "optionally take and apply default locals to its context class" do local_name, local_val = [Factory.string, Factory.string] source = @source_class.new(@root, { - :default_locals => { local_name => local_val } + :locals => { local_name => local_val } }) context = source.context_class.new('deas-source', {}) assert_responds_to local_name, context assert_equal local_val, context.send(local_name) @@ -100,15 +111,15 @@ assert_responds_to local_name, context assert_equal local_val, context.send(local_name) end - should "set any deas source given to its context class as an ivar on init" do - deas_source = 'a-deas-source' - context = subject.context_class.new(deas_source, {}) + should "set any default source given to its context class as an ivar on init" do + default_source = 'a-default-source' + context = subject.context_class.new(default_source, {}) - assert_equal deas_source, context.instance_variable_get('@deas_source') + assert_equal default_source, context.instance_variable_get('@default_source') end end class RenderTests < InitTests @@ -124,47 +135,47 @@ should "render a template for the given file name and return its data" do exp = Factory.basic_erb_rendered(@file_locals) assert_equal exp, subject.render(@file_name, @file_locals) end - should "pass its deas source to its context class" do - deas_source = 'a-deas-source' - source = @source_class.new(@root, :deas_source => deas_source) + should "pass its default source to its context class" do + default_source = 'a-deas-source' + source = @source_class.new(@root, :default_source => default_source) context_class = nil Assert.stub(source.context_class, :new) do |s, l| context_class = ContextClassSpy.new(s, l) end source.render(@file_name, @file_locals) - assert_equal deas_source, context_class.deas_source + assert_equal default_source, context_class.default_source end end class RenderCacheTests < RenderTests desc "when caching is enabled" setup do @source = @source_class.new(@root, :cache => true) end - should "cache template eruby instances by their file name" do + should "cache templates by their file name" do exp = Factory.basic_erb_rendered(@file_locals) assert_equal exp, @source.render(@file_name, @file_locals) assert_equal [@file_name], @source.cache.keys - assert_kind_of @source.eruby_class, @source.cache[@file_name] + assert_kind_of Template, @source.cache[@file_name] end end class RenderNoCacheTests < RenderTests desc "when caching is disabled" setup do @source = @source_class.new(@root, :cache => false) end - should "not cache template eruby instances" do + should "not cache templates" do exp = Factory.basic_erb_rendered(@file_locals) assert_equal exp, @source.render(@file_name, @file_locals) assert_equal [], @source.cache.keys end @@ -237,18 +248,22 @@ end end class ContextClassSpy - attr_reader :deas_source - def initialize(deas_source, locals) - @deas_source = deas_source + attr_reader :default_source + def initialize(default_source, locals) + @default_source = default_source metaclass = class << self; self; end metaclass.class_eval do locals.each do |key, value| define_method(key){ value } end end end + end + + module SomeCustomHelpers + def a_custom_method; end end end