提交 64e832f9 编写于 作者: J Jesse Glick

[FIXED JENKINS-24433] Noting merge of #1581.

......@@ -55,7 +55,9 @@ Upcoming changes</a>
<!-- Record your changes in the trunk here. -->
<div id="trunk" style="display:none"><!--=TRUNK-BEGIN=-->
<ul class=image>
<li class=>
<li class=bug>
Search box did not work well inside folders.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-24433">issue 24433</a>)
</ul>
</div><!--=TRUNK-END=-->
<h3><a name=v1.610>What's new in 1.610</a> (2015/04/19)</h3>
......
......@@ -76,7 +76,7 @@ public class Search {
SuggestedItem target = find(index, query, smo);
if(target!=null) {
// found
rsp.sendRedirect2(a.getUrl()+target.getUrl());
rsp.sendRedirect2(req.getContextPath()+target.getUrl());
return;
}
}
......
......@@ -81,7 +81,7 @@ public class SuggestedItem {
private static SuggestedItem build(SearchableModelObject searchContext, Item top) {
ItemGroup<? extends Item> parent = top.getParent();
if (parent instanceof Item && parent != searchContext) {
if (parent instanceof Item) {
Item parentItem = (Item)parent;
return new SuggestedItem(build(searchContext, parentItem), top);
}
......
......@@ -32,6 +32,8 @@ import static org.junit.Assert.fail;
import hudson.model.FreeStyleProject;
import hudson.model.ListView;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
......@@ -105,6 +107,37 @@ public class SearchTest {
assertTrue(contents.contains(String.format("<title>%s [Jenkins]</title>", projectName)));
}
@Issue("JENKINS-24433")
@Test
public void testSearchByProjectNameBehindAFolder() throws Exception {
FreeStyleProject myFreeStyleProject = j.createFreeStyleProject("testSearchByProjectName");
MockFolder myMockFolder = j.createFolder("my-folder-1");
Page result = j.createWebClient().goTo(myMockFolder.getUrl() + "search?q="+ myFreeStyleProject.getName());
assertNotNull(result);
j.assertGoodStatus(result);
URL resultUrl = result.getWebResponse().getUrl();
assertTrue(resultUrl.toString().equals(j.getInstance().getRootUrl() + myFreeStyleProject.getUrl()));
}
@Issue("JENKINS-24433")
@Test
public void testSearchByProjectNameInAFolder() throws Exception {
MockFolder myMockFolder = j.createFolder("my-folder-1");
FreeStyleProject myFreeStyleProject = myMockFolder.createProject(FreeStyleProject.class, "my-job-1");
Page result = j.createWebClient().goTo(myMockFolder.getUrl() + "search?q=" + myFreeStyleProject.getFullName());
assertNotNull(result);
j.assertGoodStatus(result);
URL resultUrl = result.getWebResponse().getUrl();
assertTrue(resultUrl.toString().equals(j.getInstance().getRootUrl() + myFreeStyleProject.getUrl()));
}
@Test
public void testSearchByDisplayName() throws Exception {
final String displayName = "displayName9999999";
......@@ -220,11 +253,98 @@ public class SearchTest {
foundDispayName = true;
}
}
assertTrue(foundProjectName);
assertTrue(foundDispayName);
}
@Issue("JENKINS-24433")
@Test
public void testProjectNameBehindAFolderDisplayName() throws Exception {
final String projectName1 = "job-1";
final String displayName1 = "job-1 display";
final String projectName2 = "job-2";
final String displayName2 = "job-2 display";
FreeStyleProject project1 = j.createFreeStyleProject(projectName1);
project1.setDisplayName(displayName1);
MockFolder myMockFolder = j.createFolder("my-folder-1");
FreeStyleProject project2 = myMockFolder.createProject(FreeStyleProject.class, projectName2);
project2.setDisplayName(displayName2);
WebClient wc = j.createWebClient();
Page result = wc.goTo(myMockFolder.getUrl() + "search/suggest?query=" + projectName1, "application/json");
assertNotNull(result);
j.assertGoodStatus(result);
String content = result.getWebResponse().getContentAsString();
JSONObject jsonContent = (JSONObject)JSONSerializer.toJSON(content);
assertNotNull(jsonContent);
JSONArray jsonArray = jsonContent.getJSONArray("suggestions");
assertNotNull(jsonArray);
assertEquals(2, jsonArray.size());
boolean foundDisplayName = false;
for(Object suggestion : jsonArray) {
JSONObject jsonSuggestion = (JSONObject)suggestion;
String name = (String)jsonSuggestion.get("name");
if(projectName1.equals(name)) {
foundDisplayName = true;
}
}
assertTrue(foundDisplayName);
}
@Issue("JENKINS-24433")
@Test
public void testProjectNameInAFolderDisplayName() throws Exception {
final String projectName1 = "job-1";
final String displayName1 = "job-1 display";
final String projectName2 = "job-2";
final String displayName2 = "my-folder-1 job-2";
FreeStyleProject project1 = j.createFreeStyleProject(projectName1);
project1.setDisplayName(displayName1);
MockFolder myMockFolder = j.createFolder("my-folder-1");
FreeStyleProject project2 = myMockFolder.createProject(FreeStyleProject.class, projectName2);
project2.setDisplayName(displayName2);
WebClient wc = j.createWebClient();
Page result = wc.goTo(myMockFolder.getUrl() + "search/suggest?query=" + projectName2, "application/json");
assertNotNull(result);
j.assertGoodStatus(result);
String content = result.getWebResponse().getContentAsString();
JSONObject jsonContent = (JSONObject)JSONSerializer.toJSON(content);
assertNotNull(jsonContent);
JSONArray jsonArray = jsonContent.getJSONArray("suggestions");
assertNotNull(jsonArray);
assertEquals(1, jsonArray.size());
boolean foundDisplayName = false;
for(Object suggestion : jsonArray) {
JSONObject jsonSuggestion = (JSONObject)suggestion;
String name = (String)jsonSuggestion.get("name");
if(displayName2.equals(name)) {
foundDisplayName = true;
}
}
assertTrue(foundDisplayName);
}
/**
* Disable/enable status shouldn't affect the search
*/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册