blob: b36b5d265caff6560614c84214491854e8f68821 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 - 2006 Mylar eclipse.org project 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:
* Mylar project committers - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.trac.tests;
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());
}
}