View Javadoc
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 org.junit.Test;
6   
7   import static org.junit.Assert.assertEquals;
8   import static org.junit.Assert.assertNull;
9   
10  public class TestSearchQuery {
11  
12      @Test
13      public void testCreateQuery() {
14          SearchQuery query = new DefaultSearchQueryParser().parse("test%20Query");
15          query.setParameter(SearchParameter.MAXHITS, "12").
16                  setParameter("app", "Fisheye");
17          assertEquals("test%20Query&maxhits=12&app=Fisheye", query.buildQueryString());
18      }
19  
20      @Test
21      public void testCreateQueryNoParams() {
22          SearchQuery query = new DefaultSearchQueryParser().parse("testQuery");
23          assertEquals("testQuery", query.buildQueryString());
24      }
25  
26      @Test
27      public void testCreateQuerySpecialChars() {
28          SearchQuery query = new DefaultSearchQueryParser().parse("test%25%5E%23Query");
29          query.setParameter(SearchParameter.MAXHITS, "12").
30                  setParameter("ap!@#p", "Fis%^#heye");
31          assertEquals("test%25%5E%23Query&maxhits=12&ap%21%40%23p=Fis%25%5E%23heye", query.buildQueryString());
32      }
33  
34      @Test
35      public void testAppendCreateQuerySpecialChars() {
36          SearchQuery query = new DefaultSearchQueryParser().parse("test%20Query&maxhits=12&app=Fisheye&a=b");
37          query.setParameter(SearchParameter.MAXHITS, "10").
38                  setParameter("a", "c").append("%20and%20some%20more&app=Crucible");
39          assertEquals("test%20Query%20and%20some%20more&maxhits=10&app=Crucible&a=c", query.buildQueryString());
40      }
41  
42      @Test
43      public void testParseComplexQuery() {
44          SearchQuery query = new DefaultSearchQueryParser().parse("simpleQuery&maxhits=12&app=fisheye&");
45          assertEquals("fisheye", query.getParameter("app"));
46          assertNull(query.getParameter("nonexistent"));
47      }
48  
49      @Test
50      public void testParseQuerySpecialCharacters() {
51          SearchQuery query = new DefaultSearchQueryParser().parse("test%25%5E%23Query&maxhits=12&ap!%40%23p=Fis%25%5E%23heye");
52          assertEquals("test%^#Query", query.getSearchString());
53          assertEquals("12", query.getParameter(SearchParameter.MAXHITS));
54          assertEquals("Fis%^#heye", query.getParameter("ap!@#p"));
55      }
56  
57  }