1   /*
2    * Created by IntelliJ IDEA.
3    * User: Mike
4    * Date: Mar 26, 2004
5    * Time: 2:26:53 PM
6    */
7   package com.atlassian.bonnie.search;
8   
9   import com.atlassian.bonnie.LuceneConnection;
10  import org.apache.lucene.document.Document;
11  import org.apache.lucene.index.IndexReader;
12  
13  import java.io.IOException;
14  import java.util.LinkedList;
15  import java.util.List;
16  
17  public class TestLuceneIndexer extends BaseLuceneTest
18  {
19      public void testIndexNewObject() throws Exception
20      {
21          final MockSearchableObject obj = createSearchableObject(124, "Page 2 title", "Page 2 description");
22          index(obj);
23  
24          luceneConnection.withReader(new LuceneConnection.ReaderAction(){
25              public Object perform(IndexReader reader) throws IOException
26              {
27                  assertEquals(1, reader.numDocs());
28                  Document doc = reader.document(0);
29                  assertEquals(MockSearchableObject.class.getName()+"-124", doc.get("handle"));
30                  assertEquals("Page 2 title", doc.get("title")); // stored field
31                  assertEquals("Page 2 description", doc.get("description")); // stored now to get back content
32                  return null;
33              }
34          });
35      }
36  
37      public void testIndexTwoObjects() throws Exception
38      {
39          List searchables = new LinkedList();
40          searchables.add(createSearchableObject(123, "Title", "Description"));
41          searchables.add(createSearchableObject(124, "Title2", "Description2"));
42          index(searchables);
43  
44          assertEquals(2, luceneConnection.getNumDocs());
45      }
46  
47      public void testIndexIgnoresUnindexable() throws Exception
48      {
49          List searchables = new LinkedList();
50          searchables.add(createSearchableObject(123, "Title", "Description"));
51          searchables.add(createSearchableObject(124, "Title2", "Description2"));
52          searchables.add(createUnindexable(125, "Title3", "Description3"));
53          index(searchables);
54  
55          assertEquals(2, luceneConnection.getNumDocs());
56      }
57  
58      public void testReIndexIndexedObject() throws Exception
59      {
60          final MockSearchableObject obj = createSearchableObject(123, "Title", "Description");
61  
62          index(obj);
63  
64          obj.setTitle("modified obj 1 title");
65  
66          luceneIndexer.index(obj);
67  
68          assertEquals(1, luceneConnection.getNumDocs());
69      }
70  
71      public void testUnIndexIndexedObject() throws Exception
72      {
73          final MockSearchableObject obj = createSearchableObject(123, "Title", "Description");
74  
75          index(obj);
76  
77          luceneIndexer.unIndex(obj);
78  
79          assertEquals(0, luceneConnection.getNumDocs());
80      }
81  }