diff --git a/plugins/techdocs/src/reader/components/TechDocsPageHeader.test.tsx b/plugins/techdocs/src/reader/components/TechDocsPageHeader.test.tsx index a2369dcfc1..8128366392 100644 --- a/plugins/techdocs/src/reader/components/TechDocsPageHeader.test.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsPageHeader.test.tsx @@ -15,44 +15,49 @@ */ import React from 'react'; import { TechDocsPageHeader } from './TechDocsPageHeader'; -import { render, act } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { act } from '@testing-library/react'; +import { renderInTestApp } from '@backstage/test-utils'; +import { entityRouteRef } from '@backstage/plugin-catalog-react'; describe('', () => { it('should render a techdocs page header', async () => { await act(async () => { - const rendered = render( - wrapInTestApp( - , - ), + }, + }} + />, + { + mountedRoutes: { + '/catalog/:namespace/:kind/:name/*': entityRouteRef, + }, + }, ); + expect(rendered.container.innerHTML).toContain('header'); expect(rendered.getAllByText('test-site-name')).toHaveLength(2); expect(rendered.getByText('test-site-desc')).toBeDefined(); @@ -61,27 +66,65 @@ describe('', () => { it('should render a techdocs page header even if metadata is missing', async () => { await act(async () => { - const rendered = render( - wrapInTestApp( - , - ), + const rendered = await renderInTestApp( + , + { + mountedRoutes: { + '/catalog/:namespace/:kind/:name/*': entityRouteRef, + }, + }, ); expect(rendered.container.innerHTML).toContain('header'); }); }); + + it('should render a link back to the component page', async () => { + await act(async () => { + const rendered = await renderInTestApp( + , + { + mountedRoutes: { + '/catalog/:namespace/:kind/:name/*': entityRouteRef, + }, + }, + ); + + expect(rendered.container.innerHTML).toContain( + '/catalog/test-namespace/test/test-name', + ); + }); + }); }); diff --git a/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx b/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx index c994b52422..7b0c2e64cc 100644 --- a/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsPageHeader.tsx @@ -18,8 +18,9 @@ import React from 'react'; import { AsyncState } from 'react-use/lib/useAsync'; import CodeIcon from '@material-ui/icons/Code'; import { EntityName } from '@backstage/catalog-model'; -import { Header, HeaderLabel, Link } from '@backstage/core'; +import { Header, HeaderLabel, Link, useRouteRef } from '@backstage/core'; import { TechDocsMetadata } from '../../types'; +import { entityRouteRef } from '@backstage/plugin-catalog-react'; type TechDocsPageHeaderProps = { entityId: EntityName; @@ -41,7 +42,7 @@ export const TechDocsPageHeader = ({ const { value: techdocsMetadataValues } = techdocsMetadata; const { value: entityMetadataValues } = entityMetadata; - const { kind, name } = entityId; + const { name } = entityId; const { site_name: siteName, site_description: siteDescription } = techdocsMetadataValues || {}; @@ -51,14 +52,14 @@ export const TechDocsPageHeader = ({ spec: { owner, lifecycle }, } = entityMetadataValues || { spec: {} }; - const componentLink = `/catalog/${kind}/${name}`; + const componentLink = useRouteRef(entityRouteRef); const labels = ( <> + {name} } @@ -92,7 +93,7 @@ export const TechDocsPageHeader = ({ siteDescription && siteDescription !== 'None' ? siteDescription : '' } type={name} - typeLink={componentLink} + typeLink={componentLink(entityId)} > {labels}