Fix empty? semantics and string first/last for empty strings

- nil is NOT empty (but IS blank) - matches Shopify production
- String first/last returns '' for empty strings, not nil - matches ActiveSupport
- Add test for nil not being empty
This commit is contained in:
Tobi Lutke
2026-01-01 22:06:22 -05:00
parent b0fb0ad83f
commit ef13b2dfd5
5 changed files with 21 additions and 7 deletions
+4 -2
View File
@@ -635,10 +635,12 @@ class StandardFiltersTest < Minitest::Test
# This enables template patterns like:
# {{ product.title | first }} => "S" (for "Snowboard")
# {{ customer.name | last }} => "h" (for "Smith")
#
# Note: ActiveSupport returns "" for empty strings, not nil.
assert_equal('f', @filters.first('foo'))
assert_equal('o', @filters.last('foo'))
assert_nil(@filters.first(''))
assert_nil(@filters.last(''))
assert_equal('', @filters.first(''))
assert_equal('', @filters.last(''))
end
def test_first_last_on_unicode_strings