package sagan.search.support; import com.google.gson.Gson; import com.google.gson.JsonParser; import io.searchbox.client.JestResult; import org.junit.Before; import org.junit.Test; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import java.util.List; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; public class SearchResultParser_FacetsTests { private static String RESULT_STRING = "{\n" + " \"took\": 185,\n" + " \"timed_out\": false,\n" + " \"_shards\": {\n" + " \"total\": 1,\n" + " \"successful\": 1,\n" + " \"failed\": 0\n" + " },\n" + " \"hits\": {\n" + " \"total\": 0,\n" + " \"max_score\": 0.5340888,\n" + " \"hits\": []\n" + " },\n" + " \"facets\": {\n" + " \"facet_paths_result\": {\n" + " \"_type\": \"terms\",\n" + " \"missing\": 0,\n" + " \"total\": 15,\n" + " \"other\": 0,\n" + " \"terms\": [{\n" + " \"term\": \"Blog\",\n" + " \"count\": 2\n" + " }, {\n" + " \"term\": \"Guides\",\n" + " \"count\": 3\n" + " }, {\n" + " \"term\": \"Guides/GettingStarted\",\n" + " \"count\": 2\n" + " }, {\n" + " \"term\": \"Guides/Tutorials\",\n" + " \"count\": 1\n" + " }, {\n" + " \"term\": \"Guides/Reference Apps\",\n" + " \"count\": 1\n" + " }, {\n" + " \"term\": \"Projects/Spring Framework\",\n" + " \"count\": 1\n" + " }, {\n" + " \"term\": \"Projects/Spring Framework/3.1.3.RELEASE\",\n" + " \"count\": 1\n" + " }, {\n" + " \"term\": \"Projects/Spring Framework/3.2.3.RELEASE\",\n" + " \"count\": 1\n" + " }, {\n" + " \"term\": \"Projects/Spring Framework/4.0.0.M1\",\n" + " \"count\": 1\n" + " },\n" + "{\"term\":\"Projects/Spring Security\",\"count\":797},\n" + "{\"term\":\"Projects/Spring Security/3.1.4.RELEASE\",\"count\":157},\n" + "{\"term\":\"Projects/Spring Security/3.2.0.M2\",\"count\":640},\n" + "{\"term\":\"Projects/Spring Security Kerberos\",\"count\":12},\n" + "{\"term\":\"Projects/Spring Security Kerberos/1.0.0.CI-SNAPSHOT\",\"count\":12},\n" + "{\"term\":\"Projects/Spring Security SAML\",\"count\":105},\n" + "{\"term\":\"Projects/Spring Security SAML/1.0.0.RC2\",\"count\":105}," + " {\n" + " \"term\": \"Projects\",\n" + " \"count\": 1\n" + " }]\n" + " }\n" + " }\n" + "}\n"; private Gson gson = new Gson(); private SearchResultParser searchResultParser; private SearchResults searchResults; @Before public void setup() { JsonParser jsonParser = new JsonParser(); searchResultParser = new SearchResultParser(); JestResult jestResult = new JestResult(gson); jestResult.setJsonObject(jsonParser.parse(RESULT_STRING).getAsJsonObject()); Pageable pageable = new PageRequest(1, 10); searchResults = searchResultParser.parseResults(jestResult, pageable, "search term"); } @Test public void returnTopLevelFacets() { List<SearchFacet> facets = searchResults.getFacets(); assertThat(facets.size(), equalTo(3)); assertThat(facets.get(0).getName(), equalTo("Blog")); assertThat(facets.get(1).getName(), equalTo("Guides")); assertThat(facets.get(2).getName(), equalTo("Projects")); } @Test public void returnNestedFacets() { SearchFacet guidesFacet = searchResults.getFacets().get(1); assertThat(guidesFacet.getFacets().size(), equalTo(3)); SearchFacet projectsFacet = searchResults.getFacets().get(2); List<SearchFacet> projectsFacetFacets = projectsFacet.getFacets(); assertThat(projectsFacetFacets.size(), equalTo(4)); assertThat(projectsFacetFacets.get(0).getName(), equalTo("Spring Framework")); assertThat(projectsFacetFacets.get(1).getName(), equalTo("Spring Security")); assertThat(projectsFacetFacets.get(2).getName(), equalTo("Spring Security Kerberos")); assertThat(projectsFacetFacets.get(3).getName(), equalTo("Spring Security SAML")); } }