package com.manning.hsia.dvdstore.test; import java.util.List; import org.apache.lucene.index.Term; import org.apache.lucene.search.Query; import org.apache.lucene.search.TermQuery; import org.hibernate.Transaction; import org.hibernate.search.FullTextSession; import org.hibernate.search.Search; import org.testng.annotations.Test; import com.manning.hsia.dvdstore.action.Indexer; import com.manning.hsia.dvdstore.model.Item; import com.manning.hsia.dvdstore.util.TestCase; public class IndexerTest extends TestCase { @Test(groups="ch05") public void testManualIndex() { Indexer indexer = new Indexer(factory); FullTextSession s = Search.getFullTextSession( factory.openSession() ); Transaction tx = s.beginTransaction(); Query luceneQuery = new TermQuery( new Term("title", "fair") ); int resultSize = s.createFullTextQuery(luceneQuery, Item.class).getResultSize(); assert 0 == resultSize; tx.commit(); s.close(); indexer.indexItems(); s = Search.getFullTextSession( factory.openSession() ); tx = s.beginTransaction(); @SuppressWarnings("unchecked") List<Item> items = s.createFullTextQuery(luceneQuery, Item.class).list(); resultSize = items.size(); assert 2 == resultSize : "Items should have been indexed:" + resultSize; tx.commit(); s.close(); indexer.purgeItems(items.get(0).getId(), items.get(1).getId()); s = Search.getFullTextSession( factory.openSession() ); tx = s.beginTransaction(); assert 0 == s.createFullTextQuery(luceneQuery, Item.class).getResultSize(): "items should no longer be there"; Item item1 = (Item) s.get(Item.class, items.get(0).getId()); Item item2 = (Item) s.get(Item.class, items.get(1).getId()); tx.commit(); s.close(); indexer.indexItems(item1, item2); s = Search.getFullTextSession( factory.openSession() ); tx = s.beginTransaction(); resultSize = s.createFullTextQuery(luceneQuery, Item.class).getResultSize(); assert 2 == resultSize: "items should be back" + resultSize; tx.commit(); s.close(); indexer.purgeItems(); s = Search.getFullTextSession( factory.openSession() ); tx = s.beginTransaction(); assert 0 == s.createFullTextQuery(luceneQuery, Item.class).getResultSize(): "Everyone should be gone"; tx.commit(); s.close(); } }