Fix broken map test and add sort test

This commit is contained in:
Florian Weingarten
2013-08-08 11:53:52 -04:00
parent 8f978ecd1a
commit ed4b61bfd3
2 changed files with 12 additions and 3 deletions

View File

@@ -101,7 +101,6 @@ module Liquid
def map(input, property)
flatten_if_necessary(input).map do |e|
e = e.call if e.is_a?(Proc)
e = e.to_liquid if e.respond_to?(:to_liquid)
if property == "to_liquid"
e
@@ -249,13 +248,14 @@ module Liquid
private
def flatten_if_necessary(input)
if input.is_a?(Array)
ary = if input.is_a?(Array)
input.flatten
elsif input.kind_of?(Enumerable)
input
else
[input].flatten
end
ary.map{ |e| e.respond_to?(:to_liquid) ? e.to_liquid : e }
end
def to_number(obj)

View File

@@ -15,6 +15,10 @@ class TestThing
"woot: #{@foo}"
end
def [](whatever)
to_s
end
def to_liquid
@foo += 1
self
@@ -133,7 +137,12 @@ class StandardFiltersTest < Test::Unit::TestCase
def test_map_calls_to_liquid
t = TestThing.new
assert_equal "woot: 1", Liquid::Template.parse('{{ foo }}').render("foo" => t)
assert_equal "woot: 1", Liquid::Template.parse('{{ foo | map: "whatever" }}').render("foo" => [t])
end
def test_sort_calls_to_liquid
t = TestThing.new
assert_equal "woot: 1", Liquid::Template.parse('{{ foo | sort: "whatever" }}').render("foo" => [t])
end
def test_map_over_proc