diff --git a/datahub-web-react/src/app/entityV2/shared/tabs/Dataset/Schema/utils/__tests__/useExtractFieldGlossaryTermsInfo.test.ts b/datahub-web-react/src/app/entityV2/shared/tabs/Dataset/Schema/utils/__tests__/useExtractFieldGlossaryTermsInfo.test.ts index e16d1abfe3..cf41388ba9 100644 --- a/datahub-web-react/src/app/entityV2/shared/tabs/Dataset/Schema/utils/__tests__/useExtractFieldGlossaryTermsInfo.test.ts +++ b/datahub-web-react/src/app/entityV2/shared/tabs/Dataset/Schema/utils/__tests__/useExtractFieldGlossaryTermsInfo.test.ts @@ -1,4 +1,5 @@ import { renderHook } from '@testing-library/react-hooks'; +import { beforeEach } from 'vitest'; import { pathMatchesExact, pathMatchesInsensitiveToV2 } from '@app/entityV2/dataset/profile/schema/utils/utils'; import useExtractFieldGlossaryTermsInfo from '@app/entityV2/shared/tabs/Dataset/Schema/utils/useExtractFieldGlossaryTermsInfo'; @@ -10,9 +11,21 @@ import { SchemaFieldDataType, } from '@src/types.generated'; +const mockUseBaseEntity = vi.hoisted(() => vi.fn()); + +vi.mock('@src/app/entity/shared/EntityContext', async (importOriginal) => { + const original = await importOriginal(); + return { + ...original, + useBaseEntity: mockUseBaseEntity, + }; +}); + describe('useExtractFieldTermsInfo', () => { + const dummySchemaFieldUrn = 'urn:li:schemaField:testField'; + const testTerm: GlossaryTerm = { - urn: 'urn:testField', + urn: 'urn:li:glossaryTerm:testTermName', type: EntityType.GlossaryTerm, name: 'testTermName', hierarchicalName: 'test.testTermName', @@ -24,7 +37,7 @@ describe('useExtractFieldTermsInfo', () => { }; const testTerm2: GlossaryTerm = { - urn: 'urn:testField2', + urn: 'urn:li:glossaryTerm:testTermName2', type: EntityType.GlossaryTerm, name: 'testTermName2', hierarchicalName: 'test.testTermName2', @@ -36,7 +49,7 @@ describe('useExtractFieldTermsInfo', () => { }; const testTerm3: GlossaryTerm = { - urn: 'urn:testField3', + urn: 'urn:li:glossaryTerm:testTermName3', type: EntityType.GlossaryTerm, name: 'testTermName3', hierarchicalName: 'test.testTermName3', @@ -48,7 +61,7 @@ describe('useExtractFieldTermsInfo', () => { }; const extraTerm: GlossaryTerm = { - urn: 'urn:extraField', + urn: 'urn:li:glossaryTerm:extraTermName', type: EntityType.GlossaryTerm, name: 'extraTermName', hierarchicalName: 'test.extraTermName', @@ -68,7 +81,7 @@ describe('useExtractFieldTermsInfo', () => { glossaryTerms: { terms: [ { - associatedUrn: 'urn:li:globalTerms:test.testTermName', + associatedUrn: dummySchemaFieldUrn, term: testTerm, }, ], @@ -84,7 +97,7 @@ describe('useExtractFieldTermsInfo', () => { glossaryTerms: { terms: [ { - associatedUrn: 'urn:li:globalTerms:test.testTermName', + associatedUrn: dummySchemaFieldUrn, term: testTerm, }, ], @@ -95,7 +108,7 @@ describe('useExtractFieldTermsInfo', () => { glossaryTerms: { terms: [ { - associatedUrn: 'urn:li:globalTerms:test.extraTermName', + associatedUrn: dummySchemaFieldUrn, term: extraTerm, }, ], @@ -116,7 +129,7 @@ describe('useExtractFieldTermsInfo', () => { glossaryTerms: { terms: [ { - associatedUrn: 'urn:li:globalTerm:test.testTermName', + associatedUrn: dummySchemaFieldUrn, term: testTerm, }, ], @@ -133,7 +146,7 @@ describe('useExtractFieldTermsInfo', () => { glossaryTerms: { terms: [ { - associatedUrn: testTerm.urn, + associatedUrn: dummySchemaFieldUrn, term: testTerm, }, ], @@ -148,18 +161,6 @@ describe('useExtractFieldTermsInfo', () => { const emptyBaseEntity = {}; - const { mockedUseBaseEntity } = vi.hoisted(() => { - return { mockedUseBaseEntity: vi.fn() }; - }); - - vi.mock('@src/app/entity/shared/EntityContext', async (importOriginal) => { - const original = await importOriginal(); - return { - ...original, - useBaseEntity: vi.fn(() => mockedUseBaseEntity()), - }; - }); - beforeAll(() => { expect(pathMatchesExact('testField', 'testField')).toBe(true); expect(pathMatchesExact('testField', '[version=2.0].[type=record].testField')).toBe(false); @@ -167,6 +168,10 @@ describe('useExtractFieldTermsInfo', () => { expect(pathMatchesInsensitiveToV2('[version=2.0].[type=record].testField', 'testField')).toBe(true); }); + beforeEach(() => { + mockUseBaseEntity.mockReturnValue(emptyBaseEntity); + }); + afterEach(() => { vi.restoreAllMocks(); vi.resetAllMocks(); @@ -212,7 +217,6 @@ describe('useExtractFieldTermsInfo', () => { }); it('should extract all terms when they were provided in both schema and editable metadata, but exclude duplicates', () => { - mockedUseBaseEntity.mockReturnValue(emptyBaseEntity); const extractFieldTermsInfo = renderHook(() => useExtractFieldGlossaryTermsInfo(filledEditableSchemaMetadata)) .result.current; @@ -244,7 +248,7 @@ describe('useExtractFieldTermsInfo', () => { editableSchemaFieldInfo: [ { fieldPath: 'testField', - glossaryTerms: { terms: [{ term: testTerm2, associatedUrn: testTerm2.urn }] }, + glossaryTerms: { terms: [{ term: testTerm2, associatedUrn: dummySchemaFieldUrn }] }, }, ], }; @@ -253,7 +257,7 @@ describe('useExtractFieldTermsInfo', () => { const schemaField: SchemaField = { ...directSchemaField, - glossaryTerms: { terms: [{ term: testTerm3, associatedUrn: testTerm3.urn }] }, + glossaryTerms: { terms: [{ term: testTerm3, associatedUrn: dummySchemaFieldUrn }] }, }; const { directTerms, editableTerms, uneditableTerms, numberOfTerms } = extractFieldTermsInfo(schemaField); @@ -267,7 +271,6 @@ describe('useExtractFieldTermsInfo', () => { }); it('should not extract any terms when they are not provided', () => { - mockedUseBaseEntity.mockReturnValue(emptyBaseEntity); const extractFieldTermsInfo = renderHook(() => useExtractFieldGlossaryTermsInfo(emptyEditableSchemaMetadata)) .result.current; @@ -280,8 +283,6 @@ describe('useExtractFieldTermsInfo', () => { }); it('should extract extra uneditable terms from fields that match the field path insensitive to V2', () => { - mockedUseBaseEntity.mockReturnValue(emptyBaseEntity); - const extractFieldTermsInfo = renderHook(() => useExtractFieldGlossaryTermsInfo(editableSchemaMetadataWithExtraTerms), ).result.current; diff --git a/datahub-web-react/src/app/entityV2/shared/tabs/Dataset/Schema/utils/__tests__/useExtractFieldTagsInfo.test.ts b/datahub-web-react/src/app/entityV2/shared/tabs/Dataset/Schema/utils/__tests__/useExtractFieldTagsInfo.test.ts index 9f2e07413f..1fe92cd4e3 100644 --- a/datahub-web-react/src/app/entityV2/shared/tabs/Dataset/Schema/utils/__tests__/useExtractFieldTagsInfo.test.ts +++ b/datahub-web-react/src/app/entityV2/shared/tabs/Dataset/Schema/utils/__tests__/useExtractFieldTagsInfo.test.ts @@ -1,12 +1,24 @@ import { renderHook } from '@testing-library/react-hooks'; -import { pathMatchesExact, pathMatchesInsensitiveToV2 } from '@app/entityV2/dataset/profile/schema/utils/utils'; import useExtractFieldTagsInfo from '@app/entityV2/shared/tabs/Dataset/Schema/utils/useExtractFieldTagsInfo'; +import { pathMatchesExact, pathMatchesInsensitiveToV2 } from '@src/app/entityV2/dataset/profile/schema/utils/utils'; import { EditableSchemaMetadata, EntityType, SchemaField, SchemaFieldDataType, Tag } from '@src/types.generated'; +const mockUseBaseEntity = vi.hoisted(() => vi.fn()); + +vi.mock('@src/app/entity/shared/EntityContext', async (importOriginal) => { + const original = await importOriginal(); + return { + ...original, + useBaseEntity: mockUseBaseEntity, + }; +}); + describe('useExtractFieldTagsInfo', () => { + const dummySchemaFieldUrn = 'urn:li:schemaField:testField'; + const testTag: Tag = { - urn: 'urn:testField', + urn: 'urn:li:tag:testTagName', type: EntityType.Tag, name: 'testTagName', properties: { @@ -15,7 +27,7 @@ describe('useExtractFieldTagsInfo', () => { }; const testTag2: Tag = { - urn: 'urn:testField2', + urn: 'urn:li:tag:testTagName2', type: EntityType.Tag, name: 'testTagName2', properties: { @@ -24,7 +36,7 @@ describe('useExtractFieldTagsInfo', () => { }; const testTag3: Tag = { - urn: 'urn:testField3', + urn: 'urn:li:tag:testTagName3', type: EntityType.Tag, name: 'testTagName3', properties: { @@ -33,7 +45,7 @@ describe('useExtractFieldTagsInfo', () => { }; const extraTag: Tag = { - urn: 'urn:extraField', + urn: 'urn:li:tag:extraTagName', type: EntityType.Tag, name: 'extraTagName', properties: { @@ -50,7 +62,7 @@ describe('useExtractFieldTagsInfo', () => { globalTags: { tags: [ { - associatedUrn: 'urn:li:globalTags:test.testTagName', + associatedUrn: dummySchemaFieldUrn, tag: testTag, }, ], @@ -66,7 +78,7 @@ describe('useExtractFieldTagsInfo', () => { globalTags: { tags: [ { - associatedUrn: 'urn:li:globalTags:test.testTagName', + associatedUrn: dummySchemaFieldUrn, tag: testTag, }, ], @@ -77,7 +89,7 @@ describe('useExtractFieldTagsInfo', () => { globalTags: { tags: [ { - associatedUrn: 'urn:li:globalTags:test.extraTagName', + associatedUrn: dummySchemaFieldUrn, tag: extraTag, }, ], @@ -98,7 +110,7 @@ describe('useExtractFieldTagsInfo', () => { globalTags: { tags: [ { - associatedUrn: 'urn:li:globalTag:test.testTagName', + associatedUrn: dummySchemaFieldUrn, tag: testTag, }, ], @@ -115,7 +127,7 @@ describe('useExtractFieldTagsInfo', () => { tags: { tags: [ { - associatedUrn: testTag.urn, + associatedUrn: dummySchemaFieldUrn, tag: testTag, }, ], @@ -130,18 +142,6 @@ describe('useExtractFieldTagsInfo', () => { const emptyBaseEntity = {}; - const { mockedUseBaseEntity } = vi.hoisted(() => { - return { mockedUseBaseEntity: vi.fn() }; - }); - - vi.mock('@src/app/entity/shared/EntityContext', async (importOriginal) => { - const original = await importOriginal(); - return { - ...original, - useBaseEntity: vi.fn(() => mockedUseBaseEntity()), - }; - }); - beforeAll(() => { expect(pathMatchesExact('testField', 'testField')).toBe(true); expect(pathMatchesExact('testField', '[version=2.0].[type=record].testField')).toBe(false); @@ -149,6 +149,10 @@ describe('useExtractFieldTagsInfo', () => { expect(pathMatchesInsensitiveToV2('[version=2.0].[type=record].testField', 'testField')).toBe(true); }); + beforeEach(() => { + mockUseBaseEntity.mockReturnValue(emptyBaseEntity); + }); + afterEach(() => { vi.restoreAllMocks(); vi.resetAllMocks(); @@ -194,7 +198,6 @@ describe('useExtractFieldTagsInfo', () => { }); it('should extract all tags when they were provided in both schema and editable metadata, but exclude duplicates', () => { - mockedUseBaseEntity.mockReturnValue(emptyBaseEntity); const extractFieldTagsInfo = renderHook(() => useExtractFieldTagsInfo(filledEditableSchemaMetadata)).result .current; @@ -225,7 +228,7 @@ describe('useExtractFieldTagsInfo', () => { editableSchemaFieldInfo: [ { fieldPath: 'testField', - globalTags: { tags: [{ tag: testTag2, associatedUrn: testTag2.urn }] }, + globalTags: { tags: [{ tag: testTag2, associatedUrn: dummySchemaFieldUrn }] }, }, ], }; @@ -233,7 +236,7 @@ describe('useExtractFieldTagsInfo', () => { const schemaField: SchemaField = { ...directSchemaField, - globalTags: { tags: [{ tag: testTag3, associatedUrn: testTag3.urn }] }, + globalTags: { tags: [{ tag: testTag3, associatedUrn: dummySchemaFieldUrn }] }, }; const { directTags, editableTags, uneditableTags, numberOfTags } = extractFieldTagsInfo(schemaField); @@ -247,7 +250,6 @@ describe('useExtractFieldTagsInfo', () => { }); it('should not extract any tags when they are not provided', () => { - mockedUseBaseEntity.mockReturnValue(emptyBaseEntity); const extractFieldTagsInfo = renderHook(() => useExtractFieldTagsInfo(emptyEditableSchemaMetadata)).result .current; @@ -260,8 +262,6 @@ describe('useExtractFieldTagsInfo', () => { }); it('should extract extra uneditable tags from fields that match the field path insensitive to V2', () => { - mockedUseBaseEntity.mockReturnValue(emptyBaseEntity); - const extractFieldTagsInfo = renderHook(() => useExtractFieldTagsInfo(editableSchemaMetadataWithExtraTags)) .result.current;