diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/util/LabelUtils.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/util/LabelUtils.java index 69208f0102..36776d9eac 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/util/LabelUtils.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/util/LabelUtils.java @@ -66,7 +66,7 @@ public class LabelUtils { } removeTermIfExists(editableFieldInfo.getGlossaryTerms(), labelUrn); - persistAspect(targetUrn, GLOSSARY_TERM_ASPECT_NAME, editableSchemaMetadata, actor, entityService); + persistAspect(targetUrn, EDITABLE_SCHEMA_METADATA, editableSchemaMetadata, actor, entityService); } } diff --git a/datahub-web-react/src/app/entity/shared/tabs/Dataset/Schema/utils/useTagsAndTermsRenderer.tsx b/datahub-web-react/src/app/entity/shared/tabs/Dataset/Schema/utils/useTagsAndTermsRenderer.tsx index f40a3c9ecd..c2c46be8a6 100644 --- a/datahub-web-react/src/app/entity/shared/tabs/Dataset/Schema/utils/useTagsAndTermsRenderer.tsx +++ b/datahub-web-react/src/app/entity/shared/tabs/Dataset/Schema/utils/useTagsAndTermsRenderer.tsx @@ -19,21 +19,23 @@ export default function useTagsAndTermsRenderer( ); return ( - setTagHoveredIndex(undefined)} - entityUrn={urn} - entityType={EntityType.Dataset} - entitySubresource={record.fieldPath} - refetch={refetch} - /> +
+ setTagHoveredIndex(undefined)} + entityUrn={urn} + entityType={EntityType.Dataset} + entitySubresource={record.fieldPath} + refetch={refetch} + /> +
); }; return tagAndTermRender; diff --git a/datahub-web-react/src/app/shared/tags/AddTagTermModal.tsx b/datahub-web-react/src/app/shared/tags/AddTagTermModal.tsx index f3a80c7d20..472d57d9bd 100644 --- a/datahub-web-react/src/app/shared/tags/AddTagTermModal.tsx +++ b/datahub-web-react/src/app/shared/tags/AddTagTermModal.tsx @@ -236,7 +236,11 @@ export default function AddTagTermModal({ - diff --git a/datahub-web-react/src/app/shared/tags/TagTermGroup.tsx b/datahub-web-react/src/app/shared/tags/TagTermGroup.tsx index 2a22e96819..10a083b475 100644 --- a/datahub-web-react/src/app/shared/tags/TagTermGroup.tsx +++ b/datahub-web-react/src/app/shared/tags/TagTermGroup.tsx @@ -229,7 +229,7 @@ export default function TagTermGroup({ {...buttonProps} > - Add Tag + Add Tag )} {canAddTerm && @@ -243,7 +243,7 @@ export default function TagTermGroup({ {...buttonProps} > - Add Term + Add Term )} {showAddModal && !!entityUrn && !!entityType && ( diff --git a/smoke-test/tests/cypress/cypress/integration/mutations/mutations.js b/smoke-test/tests/cypress/cypress/integration/mutations/mutations.js index 4a5b4eb892..a8ba4afc19 100644 --- a/smoke-test/tests/cypress/cypress/integration/mutations/mutations.js +++ b/smoke-test/tests/cypress/cypress/integration/mutations/mutations.js @@ -37,4 +37,49 @@ describe('mutations', () => { cy.deleteUrn('urn:li:tag:CypressTestAddTag') }); + + it('can add and remove terms from a dataset', () => { + cy.login(); + cy.visit('/dataset/urn:li:dataset:(urn:li:dataPlatform:hive,cypress_logging_events,PROD)'); + cy.contains('cypress_logging_events'); + + cy.contains('Add Term').click(); + + cy.focused().type('CypressTerm'); + + cy.get('.ant-select-item-option-content').within(() => cy.contains('CypressNode.CypressTerm').click({force: true})); + + cy.get('[data-testid="add-tag-term-from-modal-btn"]').click({force: true}); + cy.get('[data-testid="add-tag-term-from-modal-btn"]').should('not.exist'); + + cy.contains('CypressTerm'); + + cy.get('a[href="/glossary/urn:li:glossaryTerm:CypressNode.CypressTerm"]').within(() => cy.get('span[aria-label=close]').click()); + cy.contains('Yes').click(); + + cy.contains('CypressTerm').should('not.exist'); + }); + + it('can add and remove terms from a dataset field', () => { + cy.login(); + // make space for the glossary term column + cy.viewport(1300, 800) + cy.visit('/dataset/urn:li:dataset:(urn:li:dataPlatform:hive,cypress_logging_events,PROD)'); + cy.get('[data-testid="schema-field-event_name-terms"]').trigger('mouseover', {force: true}); + cy.get('[data-testid="schema-field-event_name-terms"]').within(() => cy.contains('Add Term').click()) + + cy.focused().type('CypressTerm'); + + cy.get('.ant-select-item-option-content').within(() => cy.contains('CypressNode.CypressTerm').click({force: true})); + + cy.get('[data-testid="add-tag-term-from-modal-btn"]').click({force: true}); + cy.get('[data-testid="add-tag-term-from-modal-btn"]').should('not.exist'); + + cy.contains('CypressTerm'); + + cy.get('a[href="/glossary/urn:li:glossaryTerm:CypressNode.CypressTerm"]').within(() => cy.get('span[aria-label=close]').click()); + cy.contains('Yes').click(); + + cy.contains('CypressTerm').should('not.exist'); + }); })