diff --git a/src/main/java/com/hubspot/jinjava/lib/filter/DefaultFilter.java b/src/main/java/com/hubspot/jinjava/lib/filter/DefaultFilter.java index 00766619b..c23548428 100644 --- a/src/main/java/com/hubspot/jinjava/lib/filter/DefaultFilter.java +++ b/src/main/java/com/hubspot/jinjava/lib/filter/DefaultFilter.java @@ -86,7 +86,7 @@ public Object filter( return object; } - return defaultValue instanceof PyWrapper + return (defaultValue instanceof PyWrapper) || (defaultValue == null) ? defaultValue : Objects.toString(defaultValue); } diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/DefaultFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/DefaultFilterTest.java index 9893267cf..ca9977c53 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/DefaultFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/DefaultFilterTest.java @@ -79,4 +79,26 @@ public void itIgnoresBadTruthyValue() { ) .isEqualTo("Type = str"); } + + @Test + public void itDefaultsNullToNull() { + assertThat( + jinjava.render( + "{% set d=d | default(null) %}{% if (d == null) %}default yields real null{% else %}default yields something other than null{% endif %}", + new HashMap<>() + ) + ) + .isEqualTo("default yields real null"); + } + + @Test + public void itDefaultsNullToNullWithTruthyParam() { + assertThat( + jinjava.render( + "{% set d=d | default(null, true) %}{% if (d == null) %}default with truthy yields real null{% else %}default with truthy yields something other than null{% endif %}", + new HashMap<>() + ) + ) + .isEqualTo("default with truthy yields real null"); + } } diff --git a/src/test/java/com/hubspot/jinjava/lib/fn/TypeFunctionTest.java b/src/test/java/com/hubspot/jinjava/lib/fn/TypeFunctionTest.java index ad01927e6..b237fe76c 100644 --- a/src/test/java/com/hubspot/jinjava/lib/fn/TypeFunctionTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/fn/TypeFunctionTest.java @@ -57,4 +57,9 @@ public void testBool() { public void testSafeString() { assertThat(TypeFunction.type(new SafeString("foo"))).isEqualTo("str"); } + + @Test + public void testNull() { + assertThat(TypeFunction.type(null)).isEqualTo("null"); + } }