From 959d0df5370a2f301c70a83b87937e47392d1ffe Mon Sep 17 00:00:00 2001 From: mohitdeuex <105265192+mohitdeuex@users.noreply.github.com> Date: Fri, 2 Sep 2022 20:15:56 +0530 Subject: [PATCH] TestCase Result feed fix for activity feed and webhook (#7166) * [Backend][Settings] Settings through UI [WIP] * [Backend][Settings] Settings through UI - eventFilter [WIP] * [Backend][Settings] Added api to allow see create request format * [Backend][Settings] JAva checkstyle * [Backend][Settings] Added Filters and db changes * [Backend][Settings] Postgres Fix * [Backend][Settings] Add New Filter * [Backend][Settings] Created Common Filters * [Backend][Settings] Fix Webhook Resources Test for failing * [Backend][Settings] Updated models so as to allow consumers to get the schemas properly * [Backend][Settings] Fix merge issues * [Backend][Settings] Fixes for UT * [Backend][Settings] Fixes for UT * [Backend][Settings] Updated to add wildcard filtering * [Backend][Settings] Java style fix * [Backend][Settings] Failing WebhookRes Fix * [Backend][Settings] Fix Style * [Backend][Settings] added softdelete * [Frontend][Settings] Skip test for now AddWebhook * [Backend][Settings] Merge Conflict fix * [Backend][Settings] Simplified Filters, added auto updating filter using scheduled thread * [Backend][Settings] typo * [Backend][Settings] review fix * [Backend][Settings] review fix - review wildcard imports * [Backend][Settings] Java checkstyle * [Backend][Settings] Fixed failing test * [Backend][Settings] Fixed failing test for Pipleine, MlModel * [Backend][Settings] Fixed Feed util test * Updated update time to 5 mins * Fix * checkstyle fix * fixed ui test mock data * fixed ui side changes for webhook filters * fix conflicts * fix corner scenario * added caching * migrate table changes to new sql * fix unused issue * Adding bootstrapped filters * Adding bootstrapped filters * failing ui * removed kafka from webhook, fixed model on ui side * Added basic filters to all entities * fix sonar checks failing * [UI] added enums for entityType and FieldTypes * update as per new api schema * Deleted commented file added test Case result to enabled OOB * Updated TestCase Message Display on Feed Slack and Teams Co-authored-by: Shailesh Parmar Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> --- .../catalog/jdbi3/TestCaseRepository.java | 1 + .../catalog/util/ChangeEventParser.java | 33 ++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TestCaseRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TestCaseRepository.java index 63a7ea622ae..e1ef2f25423 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TestCaseRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TestCaseRepository.java @@ -159,6 +159,7 @@ public class TestCaseRepository extends EntityRepository { setFields(testCase, EntityUtil.Fields.EMPTY_FIELDS); } + setFields(testCase, new EntityUtil.Fields(allowedFields, "testSuite")); ChangeDescription change = addTestCaseChangeDescription(testCase.getVersion(), testCaseResult, storedTestCaseResult); ChangeEvent changeEvent = getChangeEvent(testCase, change, entityType, testCase.getVersion()); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/ChangeEventParser.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/ChangeEventParser.java index fbc471f120a..f678eaeaedf 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/ChangeEventParser.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/ChangeEventParser.java @@ -16,6 +16,7 @@ package org.openmetadata.catalog.util; import static org.openmetadata.catalog.Entity.FIELD_DISPLAY_NAME; import static org.openmetadata.catalog.Entity.FIELD_NAME; import static org.openmetadata.catalog.Entity.FIELD_OWNER; +import static org.openmetadata.catalog.Entity.TEST_CASE; import static org.openmetadata.common.utils.CommonUtil.nullOrEmpty; import com.github.difflib.text.DiffRow; @@ -42,6 +43,8 @@ import org.openmetadata.catalog.resources.feeds.MessageParser.EntityLink; import org.openmetadata.catalog.slack.SlackAttachment; import org.openmetadata.catalog.slack.SlackMessage; import org.openmetadata.catalog.slack.TeamsMessage; +import org.openmetadata.catalog.tests.TestCase; +import org.openmetadata.catalog.tests.type.TestCaseResult; import org.openmetadata.catalog.type.ChangeDescription; import org.openmetadata.catalog.type.ChangeEvent; import org.openmetadata.catalog.type.EntityReference; @@ -243,7 +246,10 @@ public final class ChangeEventParser { String newFieldValue = getFieldValue(field.getNewValue()); String oldFieldValue = getFieldValue(field.getOldValue()); EntityLink link = getEntityLink(fieldName, entity); - if (!fieldName.equals("failureDetails")) { + if (link.getEntityType().equals(TEST_CASE) && link.getFieldName().equals("testCaseResult")) { + String message = handleTestCaseResult(publishTo, entity, link, field.getOldValue(), field.getNewValue()); + messages.put(link, message); + } else if (!fieldName.equals("failureDetails")) { String message = createMessageForField(publishTo, link, changeType, fieldName, oldFieldValue, newFieldValue); messages.put(link, message); } @@ -492,6 +498,31 @@ public final class ChangeEventParser { return getPlainTextUpdateMessage(publishTo, updatedField, oldValue.toString(), newValue.toString()); } + public static String handleTestCaseResult( + PUBLISH_TO publishTo, EntityInterface entity, EntityLink link, Object oldValue, Object newValue) { + String testCaseName = entity.getName(); + TestCaseResult result = (TestCaseResult) newValue; + TestCase testCaseEntity = (TestCase) entity; + if (result != null) { + String format = + String.format( + "Test Case %s is %s in %s/%s", + getBold(publishTo), + getBold(publishTo), + EntityLink.parse(testCaseEntity.getEntityLink()).getEntityFQN(), + testCaseEntity.getTestSuite().getName()); + return String.format(format, testCaseName, result.getTestCaseStatus()); + } else { + String format = + String.format( + "Test Case %s is updated in %s/%s", + getBold(publishTo), + EntityLink.parse(testCaseEntity.getEntityLink()).getEntityFQN(), + testCaseEntity.getTestSuite().getName()); + return String.format(format, testCaseName); + } + } + public static String getPlaintextDiff(PUBLISH_TO publishTo, String oldValue, String newValue) { // create a configured DiffRowGenerator String addMarker = FEED_ADD_MARKER;