diff --git a/test/integration/standard_filter_test.rb b/test/integration/standard_filter_test.rb index b7374ea31..dd15ff4e9 100644 --- a/test/integration/standard_filter_test.rb +++ b/test/integration/standard_filter_test.rb @@ -928,45 +928,58 @@ def test_where_no_target_value assert_equal([{ "foo" => true }, { "foo" => "for sure" }], @filters.where(input, "foo")) end - def test_sum + def test_sum_with_all_numbers input = [1, 2] + assert_equal(3, @filters.sum(input)) + assert_raises(Liquid::ArgumentError, "cannot select the property 'quantity'") do + @filters.sum(input, "quantity") + end end def test_sum_with_numeric_strings - input = [1, "2"] - assert_equal(3, @filters.sum(input)) + input = [1, 2, "3", "4"] + + assert_equal(10, @filters.sum(input)) + assert_raises(Liquid::ArgumentError, "cannot select the property 'quantity'") do + @filters.sum(input, "quantity") + end end - def test_sum_with_non_numeric_values - input = [3, "foo", { "foo" => "bar" }, true, nil] - assert_equal(3, @filters.sum(input)) + def test_sum_with_nested_arrays + input = [1, [2, [3, 4]]] + + assert_equal(10, @filters.sum(input)) + assert_raises(Liquid::ArgumentError, "cannot select the property 'quantity'") do + @filters.sum(input, "quantity") + end end - def test_sum_with_property_on_indexable_map_values - input = [ - { "quantity" => 1 }, - { "quantity" => 2 }, - ] + def test_sum_with_indexable_map_values + input = [{ "quantity" => 1 }, { "quantity" => 2, "weight" => 3 }, { "weight" => 4 }] + assert_equal(0, @filters.sum(input)) assert_equal(3, @filters.sum(input, "quantity")) - assert_equal(0, @filters.sum(input, "weight")) + assert_equal(7, @filters.sum(input, "weight")) + assert_equal(0, @filters.sum(input, "subtotal")) end - def test_sum_with_property_on_indexable_non_map_values - input = [1, "foo", { "quantity" => 2 }] + def test_sum_with_indexable_non_map_values + input = [1, [2], "foo", { "quantity" => 3 }] + assert_equal(3, @filters.sum(input)) assert_raises(Liquid::ArgumentError, "cannot select the property 'quantity'") do @filters.sum(input, "quantity") end end - def test_sum_with_property_on_unindexable_values - input = [true, nil, :foo] - assert_equal(0, @filters.sum(input, "quantity")) + def test_sum_with_unindexable_values + input = [1, true, nil, { "quantity" => 2 }] - mixed_input = [true, nil, :foo, { "quantity" => 3 }] - assert_equal(3, @filters.sum(mixed_input, "quantity")) + assert_equal(1, @filters.sum(input)) + assert_raises(Liquid::ArgumentError, "cannot select the property 'quantity'") do + @filters.sum(input, "quantity") + end end private