@Test
  public void testProductCRUD() {

    // create local product object
    Product product = SolrTestUtils.createProduct(PRODUCT_ID);

    // save product to Solr Index and confirm index count increased by 1
    repo.save(product);
    Assert.assertEquals(INITIAL_RECORD_COUNT + 1, repo.count());

    // find single product from Solr
    Product loaded = repo.findOne(Integer.toString(PRODUCT_ID));
    Assert.assertEquals(product.getName(), loaded.getName());

    // update product name in Solr and confirm index count not changed
    loaded.setName("changed named");
    repo.save(loaded);
    Assert.assertEquals(INITIAL_RECORD_COUNT + 1, repo.count());

    // retrieve product from Solr and confirm name change
    loaded = repo.findOne(Integer.toString(PRODUCT_ID));
    Assert.assertEquals("changed named", loaded.getName());

    // delete the test product in Solr and confirm index count equal to initial count
    repo.delete(loaded);
    Assert.assertEquals(INITIAL_RECORD_COUNT, repo.count());
  }
  @Test
  public void testCustomQueries() {

    // Named Query from named-queries.properties
    List<Product> products = repo.findByNameOrCategory(SOLR_STRING, sortByIdDesc());
    Assert.assertEquals(1, products.size());

    // Method Name Query test for findByPopularityGreaterThanEqual()
    Product product = SolrTestUtils.createProduct(PRODUCT_ID);
    repo.save(product);

    Page<Product> popularProducts =
        repo.findByPopularityGreaterThanEqual(10000, new PageRequest(0, 10));
    Assert.assertEquals(1, popularProducts.getTotalElements());
    Assert.assertEquals(Integer.toString(PRODUCT_ID), popularProducts.getContent().get(0).getId());
  }