diff --git a/src/main/java/com/hubspot/jinjava/lib/exptest/IsInExpTest.java b/src/main/java/com/hubspot/jinjava/lib/exptest/IsInExpTest.java index f40d2b37e..0fac8f969 100644 --- a/src/main/java/com/hubspot/jinjava/lib/exptest/IsInExpTest.java +++ b/src/main/java/com/hubspot/jinjava/lib/exptest/IsInExpTest.java @@ -36,7 +36,7 @@ public boolean evaluate(Object value, JinjavaInterpreter interpreter, Object... if (args == null || args.length == 0) { return false; } - if (!isIterable(args[0])) { + if (!(args[0] instanceof CharSequence) && !isIterable(args[0])) { throw new InvalidArgumentException( interpreter, this, diff --git a/src/test/java/com/hubspot/jinjava/lib/filter/RejectAttrFilterTest.java b/src/test/java/com/hubspot/jinjava/lib/filter/RejectAttrFilterTest.java index 9d7ed44e7..4a82b93a9 100644 --- a/src/test/java/com/hubspot/jinjava/lib/filter/RejectAttrFilterTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/filter/RejectAttrFilterTest.java @@ -75,6 +75,17 @@ public void rejectAttrWithNestedProperty() { .isEqualTo("[1, 2]"); } + @Test + public void rejectAttrWithStringMembershipExp() { + assertThat( + jinjava.render( + "{{ [('action', 'down_single'), ('event_type', 'down_single')] | rejectattr(0, 'in', 'name,event_type') | list }}", + new HashMap() + ) + ) + .isEqualTo("[['action', 'down_single']]"); + } + public static class User implements PyishSerializable { private int num;