Compare commits

...
Author SHA1 Message Date
Dominic Petrick 88a38e391d Add test 2025-03-18 17:35:16 +01:00
Dominic Petrick d5df53da0a Always stringify sum property. 2025-03-18 16:52:46 +01:00
2 changed files with 14 additions and 1 deletions
+3 -1
View File
@@ -952,11 +952,13 @@ module Liquid
# @liquid_syntax array | sum
# @liquid_return [number]
def sum(input, property = nil)
property = Liquid::Utils.to_s(property)
ary = InputIterator.new(input, context)
return 0 if ary.empty?
values_for_sum = ary.map do |item|
if property.nil?
if property.empty?
item
elsif item.respond_to?(:[])
item[property]
+11
View File
@@ -1281,6 +1281,17 @@ class StandardFiltersTest < Minitest::Test
assert_template_result("0", "{{ input | sum: 'subtotal' }}", { "input" => input })
end
def test_sum_with_non_string_property
input = [{ "true" => 1 }, { "1.0" => 0.2, "1" => -0.3 }, { "1..5" => 0.4 }]
assert_equal(1, @filters.sum(input, true))
assert_equal(0.2, @filters.sum(input, 1.0))
assert_equal(-0.3, @filters.sum(input, 1))
assert_equal(0.4, @filters.sum(input, (1..5)))
assert_equal(0, @filters.sum(input, nil))
assert_equal(0, @filters.sum(input, ""))
end
private
def with_timezone(tz)