1
2
3
4
5
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"));
31 assertEquals("Page 2 description", doc.get("description"));
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 }