package com.hubspot.jinjava.lib.filter; import static org.assertj.core.api.Assertions.assertThat; import java.nio.charset.StandardCharsets; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.junit.Before; import org.junit.Test; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.io.Resources; import com.hubspot.jinjava.Jinjava; public class GroupByFilterTest { Jinjava jinjava; @Before public void setup() { jinjava = new Jinjava(); } @Test public void testGroupByAttr() throws Exception { Document dom = Jsoup.parseBodyFragment( jinjava.render( Resources.toString(Resources.getResource("filter/groupby-attr.jinja"), StandardCharsets.UTF_8), ImmutableMap.of("persons", (Object) Lists.newArrayList( new Person("male", "jared", "stehler"), new Person("male", "foo", "bar"), new Person("female", "sarah", "jones"), new Person("male", "jim", "jones"), new Person("female", "barb", "smith") )))); assertThat(dom.select("ul.root > li")).hasSize(2); assertThat(dom.select("ul.root > li.male > ul > li")).hasSize(3); assertThat(dom.select("ul.root > li.female > ul > li")).hasSize(2); } public static class Person { private String gender; private String firstName; private String lastName; public Person(String gender, String firstName, String lastName) { this.gender = gender; this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return firstName; } public String getGender() { return gender; } public String getLastName() { return lastName; } } }