Skip to main content
summaryrefslogtreecommitdiffstats
blob: ced5053a0cc00b5b6df1366bc6fc54cdf21e7a86 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/*******************************************************************************
 * Copyright (c) 2006, 2008 Steffen Pingel and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Steffen Pingel - initial API and implementation
 *******************************************************************************/

package org.eclipse.mylyn.trac.tests.client;

import junit.framework.TestCase;

import org.eclipse.mylyn.internal.trac.core.model.TracSearch;

/**
 * @author Steffen Pingel
 */
public class TracSearchTest extends TestCase {

	private static final String QUERY1 = "&status=new|assigned|reopened&milestone~=0.1";

	private static final String URL1 = "&status=new&status=assigned&status=reopened&milestone=%7E0.1";

	private TracSearch search1;

	@Override
	protected void setUp() throws Exception {
		super.setUp();

		search1 = new TracSearch();
		search1.addFilter("status", "new");
		search1.addFilter("status", "assigned");
		search1.addFilter("status", "reopened");
		search1.addFilter("milestone", "~0.1");
	}

	public void testToQuery() {
		assertEquals(QUERY1, search1.toQuery());
	}

	public void testToQueryEmpty() {
		assertEquals("", new TracSearch().toQuery());
	}

	public void testToQueryOperators1() {
		TracSearch search = new TracSearch();
		search.addFilter("is", "a");
		search.addFilter("contains", "~b");
		search.addFilter("starts", "^c");
		search.addFilter("ends", "$d");
		search.addFilter("nis", "!e");
		search.addFilter("ncontains", "!~f");
		search.addFilter("nstarts", "!^g");
		search.addFilter("nends", "!$h");

		assertEquals("&is=a&contains~=b&starts^=c&ends$=d&nis!=e&ncontains!~=f&nstarts!^=g&nends!$=h", search.toQuery());
	}

	public void testToQueryOperators2() {
		TracSearch search = new TracSearch();
		search.addFilter("nstarts", "!^g");
		search.addFilter("nis", "!e");
		search.addFilter("is", "a");

		assertEquals("&nstarts!^=g&nis!=e&is=a", search.toQuery());
	}

	public void testToQuerySortOrder() {
		search1.setOrderBy("id");
		assertEquals("&order=id" + QUERY1, search1.toQuery());

		search1.setAscending(false);
		assertEquals("&order=id&desc=1" + QUERY1, search1.toQuery());

		search1.setOrderBy("summary");
		search1.setAscending(true);
		assertEquals("&order=summary" + QUERY1, search1.toQuery());
	}

	public void testToUrl() {
		assertEquals(URL1, search1.toUrl());
	}

	public void testToUrlEmpty() {
		// assertEquals("", new TracSearch().toUrl());
		// returns non-empty string to work around a strange Trac behaviour, see
		// TracSearch.toUrl()
		assertEquals("&order=id", new TracSearch().toUrl());
	}

	public void testToUrlEncoding() {
		search1.addFilter("encoded", "&");
		assertEquals(URL1 + "&encoded=%26", search1.toUrl());
	}

	public void testToUrlOperators1() {
		TracSearch search = new TracSearch();
		search.addFilter("is", "a");
		search.addFilter("contains", "~b");
		search.addFilter("starts", "^c");
		search.addFilter("ends", "$d");
		search.addFilter("nis", "!e");
		search.addFilter("ncontains", "!~f");
		search.addFilter("nstarts", "!^g");
		search.addFilter("nends", "!$h");

		assertEquals(
				"&is=a&contains=%7Eb&starts=%5Ec&ends=%24d&nis=%21e&ncontains=%21%7Ef&nstarts=%21%5Eg&nends=%21%24h",
				search.toUrl());
	}

	public void testToUrlOperators2() {
		TracSearch search = new TracSearch();
		search.addFilter("nstarts", "!^g");
		search.addFilter("nis", "!e");
		search.addFilter("is", "a");

		assertEquals("&nstarts=%21%5Eg&nis=%21e&is=a", search.toUrl());
	}

	public void testToUrlSortOrder() {
		search1.setOrderBy("id");
		assertEquals("&order=id" + QUERY1, search1.toQuery());

		search1.setAscending(false);
		assertEquals("&order=id&desc=1" + QUERY1, search1.toQuery());

		search1.setOrderBy("summary");
		search1.setAscending(true);
		assertEquals("&order=summary" + QUERY1, search1.toQuery());
	}

}

Back to the top