33import static org .assertj .core .api .Assertions .assertThat ;
44import static org .junit .Assert .assertEquals ;
55
6- import com .google .common .collect .ForwardingList ;
76import com .google .common .collect .ImmutableMap ;
87import com .google .common .collect .ImmutableSet ;
98import com .google .common .collect .Lists ;
1817import com .hubspot .jinjava .interpret .TemplateError ;
1918import com .hubspot .jinjava .interpret .TemplateError .ErrorItem ;
2019import com .hubspot .jinjava .interpret .TemplateError .ErrorReason ;
21- import com .hubspot .jinjava .objects .PyWrapper ;
2220import com .hubspot .jinjava .objects .date .PyishDate ;
21+ import com .hubspot .jinjava .testobjects .ExpressionResolverTestObjects ;
2322import java .math .BigDecimal ;
24- import java .util .Collection ;
2523import java .util .Date ;
2624import java .util .List ;
2725import java .util .Map ;
@@ -163,7 +161,8 @@ public void itResolvesDictValWithDotParam() {
163161
164162 @ Test
165163 public void itResolvesMapValOnCustomObject () {
166- MyCustomMap dict = new MyCustomMap ();
164+ ExpressionResolverTestObjects .MyCustomMap dict =
165+ new ExpressionResolverTestObjects .MyCustomMap ();
167166 context .put ("thedict" , dict );
168167
169168 Object val = interpreter .resolveELExpression ("thedict['foo']" , -1 );
@@ -177,7 +176,8 @@ public void itResolvesMapValOnCustomObject() {
177176
178177 @ Test
179178 public void itResolvesOtherMethodsOnCustomMapObject () {
180- MyCustomMap dict = new MyCustomMap ();
179+ ExpressionResolverTestObjects .MyCustomMap dict =
180+ new ExpressionResolverTestObjects .MyCustomMap ();
181181 context .put ("thedict" , dict );
182182
183183 Object val = interpreter .resolveELExpression ("thedict.size" , -1 );
@@ -190,67 +190,6 @@ public void itResolvesOtherMethodsOnCustomMapObject() {
190190 assertThat (val2 .toString ()).isEqualTo ("[foo=bar, two=2, size=777]" );
191191 }
192192
193- public static final class MyCustomMap implements Map <String , String > {
194-
195- Map <String , String > data = ImmutableMap .of ("foo" , "bar" , "two" , "2" , "size" , "777" );
196-
197- @ Override
198- public int size () {
199- return data .size ();
200- }
201-
202- @ Override
203- public boolean isEmpty () {
204- return data .isEmpty ();
205- }
206-
207- @ Override
208- public boolean containsKey (Object key ) {
209- return data .containsKey (key );
210- }
211-
212- @ Override
213- public boolean containsValue (Object value ) {
214- return data .containsValue (value );
215- }
216-
217- @ Override
218- public String get (Object key ) {
219- return data .get (key );
220- }
221-
222- @ Override
223- public String put (String key , String value ) {
224- return null ;
225- }
226-
227- @ Override
228- public String remove (Object key ) {
229- return null ;
230- }
231-
232- @ Override
233- public void putAll (Map <? extends String , ? extends String > m ) {}
234-
235- @ Override
236- public void clear () {}
237-
238- @ Override
239- public Set <String > keySet () {
240- return data .keySet ();
241- }
242-
243- @ Override
244- public Collection <String > values () {
245- return data .values ();
246- }
247-
248- @ Override
249- public Set <Entry <String , String >> entrySet () {
250- return data .entrySet ();
251- }
252- }
253-
254193 @ Test
255194 public void itResolvesInnerDictVal () {
256195 Map <String , Object > dict = Maps .newHashMap ();
@@ -274,24 +213,6 @@ public void itResolvesInnerListVal() {
274213 assertThat (val ).isEqualTo ("val" );
275214 }
276215
277- public static class MyCustomList <T > extends ForwardingList <T > implements PyWrapper {
278-
279- private final List <T > list ;
280-
281- public MyCustomList (List <T > list ) {
282- this .list = list ;
283- }
284-
285- @ Override
286- protected List <T > delegate () {
287- return list ;
288- }
289-
290- public int getTotalCount () {
291- return list .size ();
292- }
293- }
294-
295216 @ Test
296217 public void itRecordsFilterNames () {
297218 Object val = interpreter .resolveELExpression ("2.3 | round" , -1 );
@@ -301,7 +222,9 @@ public void itRecordsFilterNames() {
301222
302223 @ Test
303224 public void callCustomListProperty () {
304- List <Integer > myList = new MyCustomList <>(Lists .newArrayList (1 , 2 , 3 , 4 ));
225+ List <Integer > myList = new ExpressionResolverTestObjects .MyCustomList <>(
226+ Lists .newArrayList (1 , 2 , 3 , 4 )
227+ );
305228
306229 context .put ("mylist" , myList );
307230 Object val = interpreter .resolveELExpression ("mylist.total_count" , -1 );
@@ -353,15 +276,15 @@ public void syntaxError() {
353276
354277 @ Test
355278 public void itWrapsDates () {
356- context .put ("myobj" , new MyClass (new Date (0 )));
279+ context .put ("myobj" , new ExpressionResolverTestObjects . MyClass (new Date (0 )));
357280 Object result = interpreter .resolveELExpression ("myobj.date" , -1 );
358281 assertThat (result ).isInstanceOf (PyishDate .class );
359282 assertThat (result .toString ()).isEqualTo ("1970-01-01 00:00:00" );
360283 }
361284
362285 @ Test
363286 public void blackListedProperties () {
364- context .put ("myobj" , new MyClass (new Date (0 )));
287+ context .put ("myobj" , new ExpressionResolverTestObjects . MyClass (new Date (0 )));
365288 interpreter .resolveELExpression ("myobj.class.methods[0]" , -1 );
366289
367290 assertThat (interpreter .getErrorsCopy ()).isNotEmpty ();
@@ -373,14 +296,14 @@ public void blackListedProperties() {
373296
374297 @ Test
375298 public void itWillNotReturnClassObjectProperties () {
376- context .put ("myobj" , new MyClass (new Date (0 )));
299+ context .put ("myobj" , new ExpressionResolverTestObjects . MyClass (new Date (0 )));
377300 Object clazz = interpreter .resolveELExpression ("myobj.clazz" , -1 );
378301 assertThat (clazz ).isNull ();
379302 }
380303
381304 @ Test
382305 public void blackListedMethods () {
383- context .put ("myobj" , new MyClass (new Date (0 )));
306+ context .put ("myobj" , new ExpressionResolverTestObjects . MyClass (new Date (0 )));
384307 interpreter .resolveELExpression ("myobj.wait()" , -1 );
385308
386309 assertThat (interpreter .getErrorsCopy ()).isNotEmpty ();
@@ -390,7 +313,7 @@ public void blackListedMethods() {
390313
391314 @ Test
392315 public void itWillNotReturnClassObjects () {
393- context .put ("myobj" , new MyClass (new Date (0 )));
316+ context .put ("myobj" , new ExpressionResolverTestObjects . MyClass (new Date (0 )));
394317 interpreter .resolveELExpression ("myobj.getClass()" , -1 );
395318
396319 assertThat (interpreter .getErrorsCopy ()).isNotEmpty ();
@@ -517,29 +440,35 @@ public void itStoresResolvedFunctions() {
517440
518441 @ Test
519442 public void presentOptionalProperty () {
520- context .put ("myobj" , new OptionalProperty (null , "foo" ));
443+ context .put ("myobj" , new ExpressionResolverTestObjects . OptionalProperty (null , "foo" ));
521444 assertThat (interpreter .resolveELExpression ("myobj.val" , -1 )).isEqualTo ("foo" );
522445 assertThat (interpreter .getErrorsCopy ()).isEmpty ();
523446 }
524447
525448 @ Test
526449 public void emptyOptionalProperty () {
527- context .put ("myobj" , new OptionalProperty (null , null ));
450+ context .put ("myobj" , new ExpressionResolverTestObjects . OptionalProperty (null , null ));
528451 assertThat (interpreter .resolveELExpression ("myobj.val" , -1 )).isNull ();
529452 assertThat (interpreter .getErrorsCopy ()).isEmpty ();
530453 }
531454
532455 @ Test
533456 public void presentNestedOptionalProperty () {
534- context .put ("myobj" , new OptionalProperty (new MyClass (new Date (0 )), "foo" ));
457+ context .put (
458+ "myobj" ,
459+ new ExpressionResolverTestObjects .OptionalProperty (
460+ new ExpressionResolverTestObjects .MyClass (new Date (0 )),
461+ "foo"
462+ )
463+ );
535464 assertThat (Objects .toString (interpreter .resolveELExpression ("myobj.nested.date" , -1 )))
536465 .isEqualTo ("1970-01-01 00:00:00" );
537466 assertThat (interpreter .getErrorsCopy ()).isEmpty ();
538467 }
539468
540469 @ Test
541470 public void emptyNestedOptionalProperty () {
542- context .put ("myobj" , new OptionalProperty (null , null ));
471+ context .put ("myobj" , new ExpressionResolverTestObjects . OptionalProperty (null , null ));
543472 assertThat (interpreter .resolveELExpression ("myobj.nested.date" , -1 )).isNull ();
544473 assertThat (interpreter .getErrorsCopy ()).isEmpty ();
545474 }
@@ -548,7 +477,12 @@ public void emptyNestedOptionalProperty() {
548477 public void presentNestedNestedOptionalProperty () {
549478 context .put (
550479 "myobj" ,
551- new NestedOptionalProperty (new OptionalProperty (new MyClass (new Date (0 )), "foo" ))
480+ new ExpressionResolverTestObjects .NestedOptionalProperty (
481+ new ExpressionResolverTestObjects .OptionalProperty (
482+ new ExpressionResolverTestObjects .MyClass (new Date (0 )),
483+ "foo"
484+ )
485+ )
552486 );
553487 assertThat (
554488 Objects .toString (interpreter .resolveELExpression ("myobj.nested.nested.date" , -1 ))
@@ -559,7 +493,8 @@ public void presentNestedNestedOptionalProperty() {
559493
560494 @ Test
561495 public void itResolvesLazyExpressionsToTheirUnderlyingValue () {
562- TestClass testClass = new TestClass ();
496+ ExpressionResolverTestObjects .TestClass testClass =
497+ new ExpressionResolverTestObjects .TestClass ();
563498 Supplier <String > lazyString = () -> result ("hallelujah" , testClass );
564499
565500 context .put ("myobj" , ImmutableMap .of ("test" , LazyExpression .of (lazyString , "" )));
@@ -580,7 +515,8 @@ public void itResolvesNullLazyExpressions() {
580515
581516 @ Test
582517 public void itResolvesSuppliersOnlyIfResolved () {
583- TestClass testClass = new TestClass ();
518+ ExpressionResolverTestObjects .TestClass testClass =
519+ new ExpressionResolverTestObjects .TestClass ();
584520 Supplier <String > lazyString = () -> result ("hallelujah" , testClass );
585521
586522 context .put (
@@ -596,7 +532,8 @@ public void itResolvesSuppliersOnlyIfResolved() {
596532
597533 @ Test
598534 public void itResolvesLazyExpressionsInNested () {
599- Supplier <TestClass > lazyObject = TestClass ::new ;
535+ Supplier <ExpressionResolverTestObjects .TestClass > lazyObject =
536+ ExpressionResolverTestObjects .TestClass ::new ;
600537
601538 context .put ("myobj" , ImmutableMap .of ("test" , LazyExpression .of (lazyObject , "" )));
602539
@@ -675,75 +612,8 @@ public void itAddsInvalidInputErrorWhenArithmeticExceptionIsThrown() {
675612 .isEqualTo (ErrorReason .INVALID_INPUT );
676613 }
677614
678- public String result (String value , TestClass testClass ) {
615+ public String result (String value , ExpressionResolverTestObjects . TestClass testClass ) {
679616 testClass .touch ();
680617 return value ;
681618 }
682-
683- public static class TestClass {
684-
685- private boolean touched = false ;
686- private String name = "Amazing test class" ;
687-
688- public boolean isTouched () {
689- return touched ;
690- }
691-
692- public void touch () {
693- this .touched = true ;
694- }
695-
696- public String getName () {
697- return name ;
698- }
699- }
700-
701- public static final class MyClass {
702-
703- private Date date ;
704-
705- MyClass (Date date ) {
706- this .date = date ;
707- }
708-
709- public Class getClazz () {
710- return this .getClass ();
711- }
712-
713- public Date getDate () {
714- return date ;
715- }
716- }
717-
718- public static final class OptionalProperty {
719-
720- private MyClass nested ;
721- private String val ;
722-
723- OptionalProperty (MyClass nested , String val ) {
724- this .nested = nested ;
725- this .val = val ;
726- }
727-
728- public Optional <MyClass > getNested () {
729- return Optional .ofNullable (nested );
730- }
731-
732- public Optional <String > getVal () {
733- return Optional .ofNullable (val );
734- }
735- }
736-
737- public static final class NestedOptionalProperty {
738-
739- private OptionalProperty nested ;
740-
741- public NestedOptionalProperty (OptionalProperty nested ) {
742- this .nested = nested ;
743- }
744-
745- public Optional <OptionalProperty > getNested () {
746- return Optional .ofNullable (nested );
747- }
748- }
749619}
0 commit comments