// Copyright 2012 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.collide.client.search;
import com.google.collide.client.testing.PlaceGwtTestCase;
/**
* Tests for the search.
*/
public class SearchTest extends PlaceGwtTestCase {
@Override
public String getModuleName() {
return SearchTestUtils.BUILD_MODULE_NAME;
}
@Override
public void gwtTearDown() throws Exception {
super.gwtTearDown();
}
public void testGotoSimpleSearch() {
// Temporarily breaking local text searching in order to fix dependency
// inversion.
// TODO: Make this work again and restore test case.
/*
*SearchImpl searchReq = SearchImpl.make(); searchReq.setWorkspaceId(WS_ID);
* searchReq.setQuery("Foo"); searchReq.setPage(1); SearchResponseImpl
* searchResp = MockSearchResponseImpl.make(); searchResp.setPage(1);
* searchResp.setPageCount(10); searchResp.setResultCount(195);
* JsoArray<SearchResult> results = JsoArray.create();
* searchResp.setResults(results); for (int i = 0; i < 20; i++) {
* SearchResultImpl item = SearchResultImpl.make(); JsonArray<Snippet>
* snippets = JsoArray.create(); final SnippetImpl snippet =
* SnippetImpl.make(); switch (i % 3) { case 0: break; // no snippet at all
* case 1: snippet.setSnippetText("this is a one-line snippet text");
* snippet.setLineNumber(21); snippets.add(snippet); break; case 2:
* snippet.setSnippetText("this is a two-line snippet");
* snippet.setLineNumber(1); snippets.add(snippet); SnippetImpl snippet2 =
* SnippetImpl.make();
* snippet2.setSnippetText("text, separated by a single newline.");
* snippet2.setLineNumber(17); snippets.add(snippet2); }
* item.setSnippets(snippets); item.setTitle("/a/path/file" + i); if (i % 2
* == 0) { item.setUrl("http://somewhere.else.com/item" + i + ".html"); }
* results.add(item); }
*
*
* context.getMockFrontendApi().getSearchMockApi().expectAndReturn(searchReq,
* searchResp);
*
* RootPlace.PLACE.dispatchHistory(HistoryUtils.parseHistoryString(
* "/h/ws=(wsId=" + WS_ID + ",navEx=true)/code/search=(q=Foo,p=1)"));
*
* // and check the resulting display state, after a pause to let any dust
* settle: this.delayTestFinish(500); Scheduler.get().scheduleDeferred(new
* ScheduledCommand() {
*
* @Override public void execute() { SearchContainer.Css css =
* context.getResources().searchContainerCss(); NodeList nodelist =
* Browser.getDocument().getElementsByClassName(css.container());
* assertEquals(1, nodelist.getLength()); Element elem = (Element)
* nodelist.item(0); // TODO: this is returning "undefined," not a
* boolean, which I // think is an elemental bug. //
* assertFalse(elem.isHidden()); assertEquals(2,
* elem.getChildren().getLength()); assertTrue(((Element)
* elem.getLastChild()).getClassName().equals(css.pager()));
*
* // glance at the results: elem = elem.getChildren().item(0);
* HTMLCollection children = elem.getChildren(); assertEquals(20,
* elem.getChildNodes().getLength());
* assertFalse(elem.getFirstChildElement()
* .getClassName().equals(css.second())); assertTrue(((Element)
* elem.getLastChild()).getClassName().equals(css.second())); // Tests case
* 0 assertEquals(1,
* elem.getFirstChildElement().getChildNodes().getLength()); AnchorElement
* anchor = (AnchorElement)
* elem.getFirstChildElement().getFirstChildElement();
* assertEquals("http://somewhere.else.com/item0.html", anchor.getHref());
* assertEquals("/a/path/file0", anchor.getTextContent()); // Tests case 1
* assertEquals(2, elem.getChildren().item(1).getChildNodes().getLength());
* anchor = (AnchorElement)
* elem.getChildren().item(1).getFirstChildElement(); // Href is untestable.
* assertEquals("/a/path/file1", anchor.getTextContent());
* assertEquals("21: this is a one-line snippet text",
* elem.getChildren().item(1).getChildNodes().item(1).getTextContent()); //
* Tests case 2 assertEquals(3,
* elem.getChildren().item(2).getChildNodes().getLength()); anchor =
* (AnchorElement) elem.getChildren().item(2).getFirstChildElement();
* assertEquals("http://somewhere.else.com/item2.html", anchor.getHref());
* assertEquals("/a/path/file2", anchor.getTextContent());
* assertEquals("1: this is a two-line snippet",
* elem.getChildren().item(2).getChildNodes().item(1).getTextContent());
* assertEquals("17: text, separated by a single newline.",
* elem.getChildren().item(2).getChildNodes().item(2).getTextContent());
*
* // page 1, no previous: nodelist =
* Browser.getDocument().getElementsByClassName(css.previous());
* assertEquals(0, nodelist.getLength());
*
* elem = (Element)
* Browser.getDocument().getElementsByClassName(css.pager()).item(0);
* children = elem.getChildren(); // we seem to get empty elements (Text?)
* between the spans, which // explains the even-only numbering until we get
* to the end.
* assertTrue(children.item(0).getClassName().equals(css.thispage()));
* assertEquals("1", children.item(0).getTextContent());
* assertTrue(children.item(2).getClassName().equals(css.otherpage()));
* assertEquals("2", children.item(2).getTextContent());
* assertTrue(children.item(4).getClassName().equals(css.otherpage()));
* assertEquals("3", children.item(4).getTextContent());
* assertTrue(children.item(6).getClassName().equals(css.otherpage()));
* assertEquals("4", children.item(6).getTextContent());
* assertTrue(children.item(8).getClassName().equals(css.otherpage()));
* assertEquals("5", children.item(8).getTextContent());
* assertTrue(children.item(10).getClassName().equals(css.otherpage()));
* assertEquals("6", children.item(10).getTextContent());
* assertTrue(children.item(11).getClassName().equals(css.thispage()));
* assertEquals("...", children.item(11).getTextContent());
* assertTrue(children.item(12).getClassName().equals(css.next()));
* assertEquals(13, children.getLength());
*
* finishTest(); } });
*/
}
}