From dd53f45cc6d5aa0d7037ecc85c9ff445c146c1f0 Mon Sep 17 00:00:00 2001 From: Teddy Date: Wed, 3 Apr 2024 11:01:54 +0200 Subject: [PATCH] MINOR fix test case search filtering (#15785) * fix: test case filtering from search endpoint * style: ran java linting * fix: updated test case EL in list test --- .../resources/dqtests/TestCaseResource.java | 5 ++- .../service/search/SearchListFilter.java | 16 ++++++-- .../dqtests/TestCaseResourceTest.java | 37 ++++++++++++++++++- 3 files changed, 50 insertions(+), 8 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/dqtests/TestCaseResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/dqtests/TestCaseResource.java index f9fa88ce5e9..99ec7b0b7fb 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/dqtests/TestCaseResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/dqtests/TestCaseResource.java @@ -46,6 +46,7 @@ import org.openmetadata.schema.type.EntityHistory; import org.openmetadata.schema.type.Include; import org.openmetadata.schema.type.MetadataOperation; import org.openmetadata.service.Entity; +import org.openmetadata.service.jdbi3.Filter; import org.openmetadata.service.jdbi3.ListFilter; import org.openmetadata.service.jdbi3.TestCaseRepository; import org.openmetadata.service.resources.Collection; @@ -369,7 +370,7 @@ public class TestCaseResource extends EntityResource { String status = getQueryParam("testCaseStatus"); String testSuiteId = getQueryParam("testSuiteId"); String type = getQueryParam("testCaseType"); - String testPlatform = getQueryParam("testPlatform"); + String testPlatform = getQueryParam("testPlatforms"); String startTimestamp = getQueryParam("startTimestamp"); String endTimestamp = getQueryParam("endTimestamp"); if (entityFQN != null) { conditions.add( includeAllTests - ? String.format("{\"regexp\": {\"entityFQN\": \"%s.*\"}}", entityFQN) - : String.format("{\"term\": {\"entityFQN\": \"%s\"}}", entityFQN)); + ? String.format( + "{\"prefix\": {\"entityFQN\": \"%s\"}}", escapeDoubleQuotes(entityFQN)) + : String.format( + "{\"term\": {\"entityFQN\": \"%s\"}}", escapeDoubleQuotes(entityFQN))); } if (testSuiteId != null) { @@ -153,7 +155,9 @@ public class SearchListFilter extends Filter { } if (testPlatform != null) { - conditions.add(String.format("{\"term\": {\"testPlatforms\": \"%s\"}}", testPlatform)); + String platforms = + Arrays.stream(testPlatform.split(",")).collect(Collectors.joining("\", \"", "\"", "\"")); + conditions.add(String.format("{\"terms\": {\"testPlatforms\": [%s]}}", platforms)); } if (startTimestamp != null && endTimestamp != null) { @@ -165,4 +169,8 @@ public class SearchListFilter extends Filter { return addCondition(conditions); } + + private String escapeDoubleQuotes(String str) { + return str.replace("\"", "\\\""); + } } diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java index 71495d551e1..21fda04c416 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java @@ -56,6 +56,7 @@ import org.openmetadata.schema.entity.feed.Thread; import org.openmetadata.schema.tests.ResultSummary; import org.openmetadata.schema.tests.TestCase; import org.openmetadata.schema.tests.TestCaseParameterValue; +import org.openmetadata.schema.tests.TestPlatform; import org.openmetadata.schema.tests.TestSuite; import org.openmetadata.schema.tests.type.Assigned; import org.openmetadata.schema.tests.type.Resolved; @@ -751,7 +752,7 @@ public class TestCaseResourceTest extends EntityResourceTest(); ResultList allEntities = listEntitiesFromSearch(queryParams, testCasesNum, 0, ADMIN_AUTH_HEADERS); assertEquals(testCasesNum, allEntities.getData().size()); queryParams.put("q", "test_getSimplelistFromSearcha"); allEntities = listEntitiesFromSearch(queryParams, testCasesNum, 0, ADMIN_AUTH_HEADERS); - assertNotEquals(0, allEntities.getData().size()); + assertEquals(1, allEntities.getData().size()); + org.assertj.core.api.Assertions.assertThat(allEntities.getData().get(0).getName()) + .contains("test_getSimplelistFromSearcha"); + + queryParams.clear(); + queryParams.put("entityLink", testCaseForEL.getEntityLink()); + queryParams.put("includeAllTests", true); + allEntities = listEntitiesFromSearch(queryParams, testCasesNum, 0, ADMIN_AUTH_HEADERS); + assertEquals(1, allEntities.getData().size()); + org.assertj.core.api.Assertions.assertThat(allEntities.getData().get(0).getEntityLink()) + .contains(testCaseForEL.getEntityLink()); + + queryParams.clear(); + queryParams.put("testPlatforms", TestPlatform.DEEQU); + allEntities = listEntitiesFromSearch(queryParams, testCasesNum, 0, ADMIN_AUTH_HEADERS); + assertEquals( + 0, allEntities.getData().size()); // we don't have any test cases with DEEQU platform + + queryParams.clear(); + queryParams.put("testPlatforms", TestPlatform.OPEN_METADATA); + allEntities = listEntitiesFromSearch(queryParams, testCasesNum, 0, ADMIN_AUTH_HEADERS); + assertEquals( + testCasesNum, + allEntities.getData().size()); // we have all test cases with OPEN_METADATA platform + + queryParams.clear(); + queryParams.put( + "testPlatforms", String.format("%s,%s", TestPlatform.OPEN_METADATA, TestPlatform.DEEQU)); + allEntities = listEntitiesFromSearch(queryParams, testCasesNum, 0, ADMIN_AUTH_HEADERS); + assertEquals( + testCasesNum, allEntities.getData().size()); // Should return either values matching } public void putTestCaseResult(String fqn, TestCaseResult data, Map authHeaders)