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 }