001: package org.compass.core.test.support.search;
002:
003: import org.compass.core.CompassSession;
004: import org.compass.core.CompassTransaction;
005: import org.compass.core.support.search.CompassSearchCommand;
006: import org.compass.core.support.search.CompassSearchHelper;
007: import org.compass.core.support.search.CompassSearchResults;
008: import org.compass.core.test.AbstractTestCase;
009:
010: /**
011: * @author kimchy
012: */
013: public class CompassSearchHelperTests extends AbstractTestCase {
014:
015: protected String[] getMappings() {
016: return new String[] { "support/search/mapping.cpm.xml" };
017: }
018:
019: public void testNoPagination() {
020: CompassSession session = openSession();
021: CompassTransaction tr = session.beginTransaction();
022:
023: addData(session, 10);
024: CompassSearchHelper searchHelper = new CompassSearchHelper(
025: getCompass());
026: CompassSearchResults results = searchHelper
027: .search(new CompassSearchCommand("test"));
028: assertEquals(10, results.getHits().length);
029: assertEquals(10, results.getTotalHits());
030:
031: tr.commit();
032: session.close();
033: }
034:
035: public void testNoPaginationWithCompassQuery() {
036: CompassSession session = openSession();
037: CompassTransaction tr = session.beginTransaction();
038:
039: addData(session, 10);
040: CompassSearchHelper searchHelper = new CompassSearchHelper(
041: getCompass());
042: CompassSearchResults results = searchHelper
043: .search(new CompassSearchCommand(session.queryBuilder()
044: .queryString("test").toQuery()));
045: assertEquals(10, results.getHits().length);
046: assertEquals(10, results.getTotalHits());
047:
048: tr.commit();
049: session.close();
050: }
051:
052: public void testSinglePage() {
053: CompassSession session = openSession();
054: CompassTransaction tr = session.beginTransaction();
055:
056: addData(session, 10);
057: CompassSearchHelper searchHelper = new CompassSearchHelper(
058: getCompass(), new Integer(20));
059: CompassSearchResults results = searchHelper
060: .search(new CompassSearchCommand("test"));
061: assertEquals(10, results.getHits().length);
062: assertEquals(10, results.getTotalHits());
063: assertEquals(1, results.getPages().length);
064: assertEquals(1, results.getPages()[0].getFrom());
065: assertEquals(10, results.getPages()[0].getTo());
066: assertEquals(10, results.getPages()[0].getSize());
067: assertEquals(true, results.getPages()[0].isSelected());
068:
069: tr.commit();
070: session.close();
071: }
072:
073: public void testTwoPagesExactMatch() {
074: CompassSession session = openSession();
075: CompassTransaction tr = session.beginTransaction();
076:
077: addData(session, 10);
078: CompassSearchHelper searchHelper = new CompassSearchHelper(
079: getCompass(), new Integer(5));
080: CompassSearchResults results = searchHelper
081: .search(new CompassSearchCommand("test", new Integer(0)));
082: assertEquals(5, results.getHits().length);
083: assertEquals(10, results.getTotalHits());
084: assertEquals(2, results.getPages().length);
085: assertEquals(1, results.getPages()[0].getFrom());
086: assertEquals(5, results.getPages()[0].getTo());
087: assertEquals(5, results.getPages()[0].getSize());
088: assertEquals(true, results.getPages()[0].isSelected());
089: assertEquals(6, results.getPages()[1].getFrom());
090: assertEquals(10, results.getPages()[1].getTo());
091: assertEquals(5, results.getPages()[1].getSize());
092: assertEquals(false, results.getPages()[1].isSelected());
093:
094: searchHelper = new CompassSearchHelper(getCompass(),
095: new Integer(5));
096: results = searchHelper.search(new CompassSearchCommand("test",
097: new Integer(1)));
098: assertEquals(5, results.getHits().length);
099: assertEquals(10, results.getTotalHits());
100: assertEquals(2, results.getPages().length);
101: assertEquals(1, results.getPages()[0].getFrom());
102: assertEquals(5, results.getPages()[0].getTo());
103: assertEquals(5, results.getPages()[0].getSize());
104: assertEquals(false, results.getPages()[0].isSelected());
105: assertEquals(6, results.getPages()[1].getFrom());
106: assertEquals(10, results.getPages()[1].getTo());
107: assertEquals(5, results.getPages()[1].getSize());
108: assertEquals(true, results.getPages()[1].isSelected());
109:
110: tr.commit();
111: session.close();
112: }
113:
114: public void testTwoPagesSmallerLastPage() {
115: CompassSession session = openSession();
116: CompassTransaction tr = session.beginTransaction();
117:
118: addData(session, 8);
119: CompassSearchHelper searchHelper = new CompassSearchHelper(
120: getCompass(), new Integer(5));
121: CompassSearchResults results = searchHelper
122: .search(new CompassSearchCommand("test", new Integer(0)));
123: assertEquals(5, results.getHits().length);
124: assertEquals(8, results.getTotalHits());
125: assertEquals(2, results.getPages().length);
126: assertEquals(1, results.getPages()[0].getFrom());
127: assertEquals(5, results.getPages()[0].getTo());
128: assertEquals(5, results.getPages()[0].getSize());
129: assertEquals(true, results.getPages()[0].isSelected());
130: assertEquals(6, results.getPages()[1].getFrom());
131: assertEquals(8, results.getPages()[1].getTo());
132: assertEquals(3, results.getPages()[1].getSize());
133: assertEquals(false, results.getPages()[1].isSelected());
134:
135: searchHelper = new CompassSearchHelper(getCompass(),
136: new Integer(5));
137: results = searchHelper.search(new CompassSearchCommand("test",
138: new Integer(1)));
139: assertEquals(3, results.getHits().length);
140: assertEquals(8, results.getTotalHits());
141: assertEquals(2, results.getPages().length);
142: assertEquals(1, results.getPages()[0].getFrom());
143: assertEquals(5, results.getPages()[0].getTo());
144: assertEquals(5, results.getPages()[0].getSize());
145: assertEquals(false, results.getPages()[0].isSelected());
146: assertEquals(6, results.getPages()[1].getFrom());
147: assertEquals(8, results.getPages()[1].getTo());
148: assertEquals(3, results.getPages()[1].getSize());
149: assertEquals(true, results.getPages()[1].isSelected());
150:
151: tr.commit();
152: session.close();
153: }
154:
155: /**
156: * The purpose of this test is to verify that the size of the second page is determined correctly.
157: */
158: public void testSecondSmallerPageSize() {
159: CompassSession session = openSession();
160: CompassTransaction tr = session.beginTransaction();
161:
162: addData(session, 8);
163: CompassSearchHelper searchHelper = new CompassSearchHelper(
164: getCompass(), new Integer(5));
165: CompassSearchResults results = searchHelper
166: .search(new CompassSearchCommand("test", new Integer(0)));
167: assertEquals(5, results.getHits().length);
168: assertEquals(8, results.getTotalHits());
169: assertEquals(2, results.getPages().length);
170: assertEquals(1, results.getPages()[0].getFrom());
171: assertEquals(5, results.getPages()[0].getTo());
172: assertEquals(5, results.getPages()[0].getSize());
173: assertEquals(true, results.getPages()[0].isSelected());
174: assertEquals(6, results.getPages()[1].getFrom());
175: assertEquals(8, results.getPages()[1].getTo());
176: assertEquals(3, results.getPages()[1].getSize());
177: assertEquals(false, results.getPages()[1].isSelected());
178:
179: searchHelper = new AbstractSearchHelper(getCompass(),
180: new Integer(5));
181: results = searchHelper.search(new CompassSearchCommand("test",
182: new Integer(1)));
183: assertEquals(3, results.getHits().length);
184: assertEquals(8, results.getTotalHits());
185: assertEquals(2, results.getPages().length);
186: assertEquals(5, ((AbstractSearchHelper) searchHelper)
187: .getExpectedFrom());
188: assertEquals(3, ((AbstractSearchHelper) searchHelper)
189: .getExpectedSize());
190:
191: tr.commit();
192: session.close();
193: }
194:
195: /**
196: * The purpose is to test that if user asks for the second result page (even if
197: * results fits the first page completely) that it returns the first page again
198: * and no Exeption is thrown.
199: */
200: public void testSecondPageWhenFirstPageSmallerThenPageSize() {
201: CompassSession session = openSession();
202: CompassTransaction tr = session.beginTransaction();
203:
204: addData(session, 5);
205: CompassSearchHelper searchHelper = new CompassSearchHelper(
206: getCompass(), new Integer(10));
207: // Note that we are asking for the second result page even if results completely fits the first result page.
208: CompassSearchResults results = searchHelper
209: .search(new CompassSearchCommand("test", new Integer(1)));
210: assertEquals(5, results.getHits().length);
211: assertEquals(5, results.getTotalHits());
212: assertEquals(1, results.getPages().length);
213: assertEquals(1, results.getPages()[0].getFrom());
214: assertEquals(5, results.getPages()[0].getTo());
215: assertEquals(5, results.getPages()[0].getSize());
216: assertEquals(true, results.getPages()[0].isSelected());
217:
218: tr.commit();
219: session.close();
220: }
221:
222: private void addData(CompassSession session, int size) {
223: for (int i = 0; i < size; i++) {
224: session.save(new A(i, "test value" + i));
225: }
226: }
227: }
|