128 lines
3.8 KiB
TypeScript
Raw Normal View History

import { GenericEntityProperties } from '@app/entity/shared/types';
import { getParentEntities } from '@app/entityV2/shared/containers/profile/header/getParentEntities';
import { dataPlatform } from '@src/Mocks';
import { DataProduct, EntityType } from '@types';
const PARENT_CONTAINERS: GenericEntityProperties['parentContainers'] = {
containers: [
{
urn: 'urn:li:container:1',
type: EntityType.Container,
platform: dataPlatform,
},
{
urn: 'urn:li:container:2',
type: EntityType.Container,
platform: dataPlatform,
},
],
count: 2,
};
const PARENT_DOMAINS: GenericEntityProperties['parentDomains'] = {
domains: [
{ urn: 'urn:li:domain:1', type: EntityType.Domain },
{ urn: 'urn:li:domain:2', type: EntityType.Domain },
],
count: 2,
};
const PARENT_NODES: GenericEntityProperties['parentNodes'] = {
nodes: [
{ urn: 'urn:li:glossaryNode:1', type: EntityType.GlossaryNode },
{
urn: 'urn:li:glossaryNode:2',
type: EntityType.GlossaryNode,
},
],
count: 2,
};
const PARENT: GenericEntityProperties = {
urn: 'urn:li:dataset:(urn:li:dataPlatform:snowflake,name,PROD)',
type: EntityType.Dataset,
platform: dataPlatform,
};
const dataProduct: DataProduct = {
urn: 'urn:li:dataProduct:test',
type: EntityType.DataProduct,
domain: {
associatedUrn: '',
domain: {
urn: 'urn:li:domain:bebdad41-c523-469f-9b62-de94f938f603',
id: 'bebdad41-c523-469f-9b62-de94f938f603',
type: EntityType.Domain,
parentDomains: PARENT_DOMAINS,
},
},
};
describe('getContextPath', () => {
it('returns empty array by default', () => {
const entityData = {};
const contextPath = getParentEntities(entityData);
expect(contextPath).toEqual([]);
});
it('returns correct context path for entity with parent containers', () => {
const entityData = {
parentContainers: PARENT_CONTAINERS,
parentDomains: PARENT_DOMAINS,
parentNodes: PARENT_NODES,
parent: PARENT,
};
const contextPath = getParentEntities(entityData);
expect(contextPath).toEqual(PARENT_CONTAINERS.containers);
});
it('returns correct context path for entity with parent domains', () => {
const entityData = {
parentContainers: null,
parentDomains: PARENT_DOMAINS,
parentNodes: PARENT_NODES,
parent: PARENT,
};
const contextPath = getParentEntities(entityData);
expect(contextPath).toEqual(PARENT_DOMAINS.domains);
});
it('returns correct context path for entity with parent nodes', () => {
const entityData = {
parentContainers: null,
parentDomains: null,
parentNodes: PARENT_NODES,
parent: PARENT,
};
const contextPath = getParentEntities(entityData);
expect(contextPath).toEqual(PARENT_NODES.nodes);
});
it('returns correct context path for entity with parent', () => {
const entityData = {
parentContainers: null,
parentDomains: null,
parentNodes: null,
parent: PARENT,
};
const contextPath = getParentEntities(entityData);
expect(contextPath).toEqual([PARENT]);
});
it('returns correct context path for data products', () => {
const entityData = dataProduct;
const contextPath = getParentEntities(entityData, EntityType.DataProduct);
expect(contextPath).toEqual([
dataProduct.domain?.domain,
...(dataProduct.domain?.domain?.parentDomains?.domains || []),
]);
});
});