1   /*
2    * Created on Aug 10, 2004
3    */
4   package org.marketchangers.prayer.lucene;
5   
6   import java.io.IOException;
7   import java.util.Date;
8   import java.util.HashMap;
9   import java.util.Map;
10  
11  import junit.framework.TestCase;
12  
13  import org.apache.lucene.analysis.Analyzer;
14  import org.apache.lucene.analysis.standard.StandardAnalyzer;
15  import org.apache.lucene.index.IndexWriter;
16  import org.apache.lucene.store.Directory;
17  import org.apache.lucene.store.RAMDirectory;
18  import org.marketchangers.prayer.PrayerCategory;
19  import org.marketchangers.prayer.PrayerRequest;
20  import org.marketchangers.prayer.PrayerRequestQuery;
21  import org.marketchangers.prayer.PrayerRequestSearcher;
22  ;
23  
24  /***
25   * @author <a href="mailto:jniu@wc-group.com">Jianshuo Niu</a>
26   */
27  public class LucenePrayerRequestSearchUpdateStatusIntegrationTest
28  	extends TestCase {
29  
30  	private IndexProvider provider;
31  	private PrayerRequestSearcher searcher;
32  	private PrayerRequest request1;
33  	private PrayerRequest request2;
34  	private Date startDate;
35  	private Date endDate;
36  	private PrayerCategory category;
37  
38  	public void setUp() throws IOException {
39  		Directory dir = new RAMDirectory();
40  		Analyzer analyzer = new StandardAnalyzer();
41  		new IndexWriter(dir, analyzer, true).close();
42  		provider = new DefaultIndexProvider(dir, analyzer);
43  		searcher = new LucenePrayerRequestSearcher(provider);
44  		startDate = new Date();
45  		endDate = new Date();
46  		request1 = new PrayerRequest();
47  		request2 = new PrayerRequest();
48  
49  		category = new PrayerCategory();
50  		category.setId(new Integer(1));
51  		category.setName("category");
52  
53  		request1.setBackground("background");
54  		request1.setCategory(category);
55  		request1.setContent("this is a test");
56  		request1.setStatus("open");
57  		request1.setEndDate(endDate);
58  		request1.setStartDate(startDate);
59  		request1.setSubject("subject1");
60  		request1.setRequestorUserId("jniu@wc-group.com");
61  		request1.setId(new Integer(12));
62  
63  		request2.setBackground("background");
64  		request2.setCategory(category);
65  		request2.setContent("this is another test");
66  		request2.setStatus("open");
67  		request2.setEndDate(endDate);
68  		request2.setStartDate(startDate);
69  		request2.setSubject("subject2");
70  		request2.setRequestorUserId("mttod@wc-group.com");
71  		request2.setId(new Integer(25));
72  	}
73  
74  	public void testAddAndUpdate() {
75  		PrayerRequest request = new PrayerRequest();
76  
77  		request.setBackground("background");
78  		request.setCategory(category);
79  		request.setContent("this is a test");
80  		request.setStatus("close");
81  		request.setEndDate(endDate);
82  		request.setStartDate(startDate);
83  		request.setSubject("subject1");
84  		request.setId(new Integer(12));
85  		request.setRequestorUserId("jniu@wc-group.com");
86  
87  		searcher.index(request1);
88  		searcher.index(request2);
89  		Map map = new HashMap();
90  
91  		map.put("categoryName", new String[] { "category" });
92  		map.put("endDate", new String[] { endDate.toString()});
93  		map.put("requestorUserId", new String[] { "jniu@wc-group.com" });
94  		map.put("searchTerm", new String[] { "test" });
95  		map.put("startDate", new String[] { startDate.toString()});
96  		map.put("status", new String[] { "open" });
97  
98  		PrayerRequestQuery query = new PrayerRequestQuery(map);
99  		assertEquals(1, searcher.search(query).size());
100 		searcher.updateStatus(request);
101 		assertEquals(0, searcher.search(query).size());
102 	}
103 }