From 872ca3598a7fc8084a6f89b80a5e6301d75e342d Mon Sep 17 00:00:00 2001 From: Mars Lan Date: Fri, 14 Aug 2020 07:09:27 -0700 Subject: [PATCH] fix(search): clear description from dataset index when it's cleared (#1808) Fixes https://github.com/linkedin/datahub/issues/1798 --- .../builders/search/DatasetIndexBuilder.java | 2 + .../search/DatasetIndexBuilderTest.java | 40 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 metadata-builders/src/test/java/com/linkedin/metadata/builders/search/DatasetIndexBuilderTest.java diff --git a/metadata-builders/src/main/java/com/linkedin/metadata/builders/search/DatasetIndexBuilder.java b/metadata-builders/src/main/java/com/linkedin/metadata/builders/search/DatasetIndexBuilder.java index c5115652e8..6c90ad0d94 100644 --- a/metadata-builders/src/main/java/com/linkedin/metadata/builders/search/DatasetIndexBuilder.java +++ b/metadata-builders/src/main/java/com/linkedin/metadata/builders/search/DatasetIndexBuilder.java @@ -72,6 +72,8 @@ public class DatasetIndexBuilder extends BaseIndexBuilder { final DatasetDocument doc = setUrnDerivedFields(urn); if (datasetProperties.hasDescription()) { doc.setDescription(datasetProperties.getDescription()); + } else { + doc.setDescription(""); } return doc; } diff --git a/metadata-builders/src/test/java/com/linkedin/metadata/builders/search/DatasetIndexBuilderTest.java b/metadata-builders/src/test/java/com/linkedin/metadata/builders/search/DatasetIndexBuilderTest.java new file mode 100644 index 0000000000..0202000745 --- /dev/null +++ b/metadata-builders/src/test/java/com/linkedin/metadata/builders/search/DatasetIndexBuilderTest.java @@ -0,0 +1,40 @@ +package com.linkedin.metadata.builders.search; + +import com.linkedin.common.FabricType; +import com.linkedin.common.urn.DataPlatformUrn; +import com.linkedin.common.urn.DatasetUrn; +import com.linkedin.dataset.DatasetProperties; +import com.linkedin.metadata.aspect.DatasetAspect; +import com.linkedin.metadata.dao.utils.ModelUtils; +import com.linkedin.metadata.search.DatasetDocument; +import com.linkedin.metadata.snapshot.DatasetSnapshot; +import java.util.Collections; +import java.util.List; +import org.testng.annotations.Test; + +import static org.testng.Assert.*; + + +public class DatasetIndexBuilderTest { + + @Test + public void testDescriptionClearing() { + DatasetUrn datasetUrn = new DatasetUrn(new DataPlatformUrn("foo"), "bar", FabricType.PROD); + + DatasetProperties datasetProperties = new DatasetProperties().setDescription("baz"); + DatasetSnapshot datasetSnapshot = ModelUtils.newSnapshot(DatasetSnapshot.class, datasetUrn, + Collections.singletonList(ModelUtils.newAspectUnion(DatasetAspect.class, datasetProperties))); + List actualDocs = new DatasetIndexBuilder().getDocumentsToUpdate(datasetSnapshot); + assertEquals(actualDocs.size(), 1); + assertEquals(actualDocs.get(0).getUrn(), datasetUrn); + assertEquals(actualDocs.get(0).getDescription(), "baz"); + + datasetProperties = new DatasetProperties(); + datasetSnapshot = ModelUtils.newSnapshot(DatasetSnapshot.class, datasetUrn, + Collections.singletonList(ModelUtils.newAspectUnion(DatasetAspect.class, datasetProperties))); + actualDocs = new DatasetIndexBuilder().getDocumentsToUpdate(datasetSnapshot); + assertEquals(actualDocs.size(), 1); + assertEquals(actualDocs.get(0).getUrn(), datasetUrn); + assertEquals(actualDocs.get(0).getDescription(), ""); + } +} \ No newline at end of file