@Test
 public void testFacetOnSingleField() {
   FacetPage<ProductBean> facetPage = repo.findAllFacetOnPopularity(new PageRequest(0, 10));
   Assert.assertEquals(1, facetPage.getFacetFields().size());
   Page<FacetFieldEntry> page =
       facetPage.getFacetResultPage(facetPage.getFacetFields().iterator().next());
   Assert.assertEquals(3, page.getContent().size());
   for (FacetFieldEntry entry : page) {
     Assert.assertEquals("popularity", entry.getField().getName());
   }
 }
  @Test
  public void testFacetQuery() {

    FacetPage<Product> facetPage = repo.findProductCategoryFacets(new PageRequest(0, 100));
    Assert.assertEquals(repo.findAllProducts().size(), facetPage.getNumberOfElements());

    Page<FacetFieldEntry> page = facetPage.getFacetResultPage(SolrProductField.CATEGORY);
    Assert.assertEquals(INITIAL_CATEGORY_COUNT, page.getNumberOfElements());

    for (FacetFieldEntry entry : page) {
      Assert.assertEquals(SolrProductField.CATEGORY.getName(), entry.getField().getName());
      Assert.assertEquals(repo.findByCategory(entry.getValue()).size(), entry.getValueCount());
    }
  }
  @Test
  public void testFacetOnMultipleFields() {
    FacetPage<ProductBean> facetPage =
        repo.findAllFacetOnPopularityAndAvailable(new PageRequest(0, 10));
    Assert.assertEquals(2, facetPage.getFacetFields().size());

    Page<FacetFieldEntry> popularityPage =
        facetPage.getFacetResultPage(new SimpleField("popularity"));
    Assert.assertEquals(3, popularityPage.getContent().size());
    for (FacetFieldEntry entry : popularityPage) {
      Assert.assertEquals("popularity", entry.getField().getName());
    }

    Page<FacetFieldEntry> availablePage = facetPage.getFacetResultPage(new SimpleField("inStock"));
    Assert.assertEquals(2, availablePage.getContent().size());
    for (FacetFieldEntry entry : availablePage) {
      Assert.assertEquals("inStock", entry.getField().getName());
    }
  }