Skip to content

Commit

Permalink
[FIXED JENKINS-24433] Noting merge of #1581.
Browse files Browse the repository at this point in the history
  • Loading branch information
jglick committed Apr 21, 2015
2 parents 1a8a00a + 6528ff1 commit 64e832f
Show file tree
Hide file tree
Showing 4 changed files with 126 additions and 4 deletions.
4 changes: 3 additions & 1 deletion changelog.html
Expand Up @@ -55,7 +55,9 @@
<!-- 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>
Expand Down
2 changes: 1 addition & 1 deletion core/src/main/java/hudson/search/Search.java
Expand Up @@ -76,7 +76,7 @@ public void doIndex(StaplerRequest req, StaplerResponse rsp) throws IOException,
SuggestedItem target = find(index, query, smo);
if(target!=null) {
// found
rsp.sendRedirect2(a.getUrl()+target.getUrl());
rsp.sendRedirect2(req.getContextPath()+target.getUrl());
return;
}
}
Expand Down
2 changes: 1 addition & 1 deletion core/src/main/java/hudson/search/SuggestedItem.java
Expand Up @@ -81,7 +81,7 @@ public String getUrl() {

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);
}
Expand Down
122 changes: 121 additions & 1 deletion test/src/test/java/hudson/search/SearchTest.java
Expand Up @@ -32,6 +32,8 @@
import hudson.model.FreeStyleProject;
import hudson.model.ListView;

import java.net.URL;

import java.util.ArrayList;
import java.util.List;

Expand Down Expand Up @@ -105,6 +107,37 @@ public void testSearchByProjectName() throws Exception {
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";
Expand Down Expand Up @@ -220,11 +253,98 @@ else if(displayName.equals(name)) {
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
*/
Expand Down

0 comments on commit 64e832f

Please sign in to comment.