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