Update tests

This commit is contained in:
ccocchi 2012-04-08 23:26:18 +02:00
parent 7f66973b83
commit 1f36248f13
4 changed files with 45 additions and 21 deletions

View File

@ -62,7 +62,11 @@ module RablFastJson
if args.first.is_a?(Hash)
args.first.each_pair { |k, v| @template[v] = k }
else
args.each { |name| @template[name] = name }
options = args.extract_options!
args.each { |name|
key = options[:as] || name
@template[key] = name
}
end
end
alias_method :attributes, :attribute

View File

@ -17,7 +17,7 @@ module RablFastJson
compiled_template = get_compiled_template(path, source)
compiled_template.context = context
body = compiled_template.render
ActiveSupport::JSON.encode(compiled_template.has_root_name? ? { compiled_template.root_name => body } : body)
ActiveSupport::JSON.encode(compiled_template.root_name ? { compiled_template.root_name => body } : body)
end
def get_compiled_template(path, source)

View File

@ -13,6 +13,17 @@ class TestCompiledTemplate < ActiveSupport::TestCase
@template.data = :@data
end
test "render object wth empty template" do
@template.source = {}
assert_equal({}, @template.render)
end
test "render collection with empty template" do
@context.stub(:instance_variable_get).with(:@data).and_return([@data])
@template.source = {}
assert_equal([{}], @template.render)
end
test "render single object attributes" do
@template.source = { :id => :id, :name => :name }
assert_equal({ :id => 1, :name => 'foobar'}, @template.render)
@ -38,14 +49,14 @@ class TestCompiledTemplate < ActiveSupport::TestCase
], @template.render)
end
test "render object with node property" do
test "render node property" do
proc = lambda { |object| object.sex }
@template.source = { :sex => proc }
assert_equal({ :sex => 'male' }, @template.render)
end
test "render obejct with conditionnal node property" do
condition = lambda { |u| u.name.present? }
test "render node property with true condition" do
condition = lambda { |u| true }
proc = lambda { |object| object.name }
@template.source = { :name => [condition, proc] }
assert_equal({ :name => 'foobar' }, @template.render)

View File

@ -21,7 +21,12 @@ class CompilerTest < ActiveSupport::TestCase
assert_equal({ :id => :id }, t.source)
end
test "attribute can be aliased" do
test "attribute can be aliased through :as option" do
t = @compiler.compile_source(%{ attribute :foo, :as => :bar })
assert_equal({ :bar => :foo}, t.source)
end
test "attribute can be aliased through hash" do
t = @compiler.compile_source(%{ attribute :foo => :bar })
assert_equal({ :bar => :foo }, t.source)
end
@ -82,23 +87,27 @@ class CompilerTest < ActiveSupport::TestCase
test "object set data for the template" do
t = @compiler.compile_source(%{ object :@user })
assert_equal :@user, t.data
assert_equal({}, t.source)
end
test "object property can define root name" do
t = @compiler.compile_source(%{ object :@user => :author })
assert_equal :@user, t.data
assert_equal :author, t.root_name
assert_equal({}, t.source)
end
test "collection set the data for the template" do
t = @compiler.compile_source(%{ collection :@user })
assert_equal :@user, t.data
assert_equal({}, t.source)
end
test "collection property can define root name" do
t = @compiler.compile_source(%{ collection :@user => :users })
assert_equal :@user, t.data
assert_equal :users, t.root_name
assert_equal({}, t.source)
end
test "collection property can define root name via options" do