1 package com.atlassian.sal.core.search.query;
2
3 import com.atlassian.sal.api.search.parameter.SearchParameter;
4 import com.atlassian.sal.api.search.query.SearchQuery;
5 import junit.framework.TestCase;
6
7
8
9 public class TestSearchQuery extends TestCase {
10 public void testCreateQuery() {
11 SearchQuery query = new DefaultSearchQueryParser().parse("test%20Query");
12 query.setParameter(SearchParameter.MAXHITS, "12").
13 setParameter("app", "Fisheye");
14 assertEquals("test%20Query&maxhits=12&app=Fisheye", query.buildQueryString());
15 }
16
17 public void testCreateQueryNoParams() {
18 SearchQuery query = new DefaultSearchQueryParser().parse("testQuery");
19 assertEquals("testQuery", query.buildQueryString());
20 }
21
22 public void testCreateQuerySpecialChars() {
23 SearchQuery query = new DefaultSearchQueryParser().parse("test%25%5E%23Query");
24 query.setParameter(SearchParameter.MAXHITS, "12").
25 setParameter("ap!@#p", "Fis%^#heye");
26 assertEquals("test%25%5E%23Query&maxhits=12&ap%21%40%23p=Fis%25%5E%23heye", query.buildQueryString());
27 }
28
29 public void testAppendCreateQuerySpecialChars() {
30 SearchQuery query = new DefaultSearchQueryParser().parse("test%20Query&maxhits=12&app=Fisheye&a=b");
31 query.setParameter(SearchParameter.MAXHITS, "10").
32 setParameter("a", "c").append("%20and%20some%20more&app=Crucible");
33 assertEquals("test%20Query%20and%20some%20more&maxhits=10&app=Crucible&a=c", query.buildQueryString());
34 }
35
36
37 public void testParseComplexQuery() {
38 SearchQuery query = new DefaultSearchQueryParser().parse("simpleQuery&maxhits=12&app=fisheye&");
39 assertEquals("fisheye", query.getParameter("app"));
40 assertNull(query.getParameter("nonexistent"));
41 }
42
43 public void testParseQuerySpecialCharacters() {
44 SearchQuery query = new DefaultSearchQueryParser().parse("test%25%5E%23Query&maxhits=12&ap!%40%23p=Fis%25%5E%23heye");
45 assertEquals("test%^#Query", query.getSearchString());
46 assertEquals("12", query.getParameter(SearchParameter.MAXHITS));
47 assertEquals("Fis%^#heye", query.getParameter("ap!@#p"));
48 }
49
50 }