Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ACS-6125: test support for path queries against categories #2602

Merged
merged 8 commits into from
Nov 23, 2023
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.alfresco.elasticsearch.reindexing;

import static java.lang.String.format;

import static org.alfresco.elasticsearch.SearchQueryService.req;
import static org.alfresco.utility.report.log.Step.STEP;

Expand All @@ -13,7 +15,7 @@
/**
* Tests verifying live indexing of secondary children and ANCESTOR index in Elasticsearch.
*/
@SuppressWarnings({"PMD.JUnitTestsShouldIncludeAssert", "PMD.JUnit4TestShouldUseTestAnnotation"}) // these are testng tests and use searchQueryService.expectResultsFromQuery for assertion
@SuppressWarnings({"PMD.JUnitTestsShouldIncludeAssert", "PMD.JUnit4TestShouldUseTestAnnotation", "PMD.MethodNamingConventions", "PMD.LocalVariableNamingConventions"}) // these are testng tests and use searchQueryService.expectResultsFromQuery for assertion
public class NodeWithCategoryIndexingTests extends NodesSecondaryChildrenRelatedTests
{

Expand Down Expand Up @@ -112,4 +114,58 @@ public void testParentQueryAgainstFolderAfterParentCategoryDeletion()
STEP("Verify that searching by PARENT and deleted category will find no descendant nodes.");
searchQueryService.expectResultsFromQuery(query, testUser);
}

@Test(groups = TestGroup.SEARCH)
public void testSearchByPath()
{
// given
String Kname = categories.get(K).getName();
String Lname = categories.get(L).getName();
String Aname = folders(A).getName();

// then
STEP("Verify that searching by PATH and category will find: folderA");
SearchRequest query = req(format("PATH:'/cm:categoryRoot/cm:generalclassifiable/cm:%s/cm:%s/cm:%s'", Kname, Lname, Aname));
searchQueryService.expectResultsFromQuery(query, testUser, folders(A).getName());
}

@Test(groups = TestGroup.SEARCH)
public void ensureCategoriesAreNotTransitive_lookingForExactChildren()
{
// given
String Kname = categories.get(K).getName();
String Lname = categories.get(L).getName();
String Aname = folders(A).getName();
String Bname = folders(B).getName();

// then
STEP("Verify that searching by PATH for nested folder will return no results (Dependency to category is not transitive)");
SearchRequest query = req(format("PATH:'/cm:categoryRoot/cm:generalclassifiable/cm:%s/cm:%s/cm:%s/cm:%s'", Kname, Lname, Aname, Bname));
searchQueryService.expectNoResultsFromQuery(query, testUser);
}

@Test(groups = TestGroup.SEARCH)
public void ensureCategoriesAreNotTransitive_lookingForAllDescendants()
{
// given
String Kname = categories.get(K).getName();
String Lname = categories.get(L).getName();

// then
STEP("Verify that searching by PATH and category will find: folderA");
SearchRequest query = req(format("PATH:'/cm:categoryRoot/cm:generalclassifiable/cm:%s/cm:%s//*'", Kname, Lname));
searchQueryService.expectResultsFromQuery(query, testUser, folders(A).getName());
}

@Test(groups = TestGroup.SEARCH)
public void ensureCategoriesAreNotTransitive_lookingForAllDescendants_byParentCategory()
{
// given
String Kname = categories.get(K).getName();

// then
STEP("Verify that searching by PATH and category will find: folderA");
SearchRequest query = req(format("PATH:'/cm:categoryRoot/cm:generalclassifiable/cm:%s//*'", Kname));
searchQueryService.expectResultsFromQuery(query, testUser, categories.get(L).getName(), folders(A).getName());
}
}