From 424d978ccdc47b2b9380aa0af4a7e90c79dd1d28 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 9 Mar 2022 16:30:18 +0100 Subject: [PATCH] chore: added some more tests to favoriting Signed-off-by: blam --- .../FavoriteEntity/FavoriteEntity.tsx | 1 + .../TemplateCard/CardHeader.test.tsx | 94 ++++++++++++++++++- .../TemplateCard/CardHeader.tsx | 2 +- 3 files changed, 95 insertions(+), 2 deletions(-) diff --git a/plugins/catalog-react/src/components/FavoriteEntity/FavoriteEntity.tsx b/plugins/catalog-react/src/components/FavoriteEntity/FavoriteEntity.tsx index e055f4056f..163d819a35 100644 --- a/plugins/catalog-react/src/components/FavoriteEntity/FavoriteEntity.tsx +++ b/plugins/catalog-react/src/components/FavoriteEntity/FavoriteEntity.tsx @@ -43,6 +43,7 @@ export const FavoriteEntity = (props: FavoriteEntityProps) => { ); return ( toggleStarredEntity()} diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx index 1fe55b7b02..287d813ca7 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ import React from 'react'; -import { render } from '@testing-library/react'; +import { fireEvent, render } from '@testing-library/react'; import { CardHeader } from './CardHeader'; import { ThemeProvider } from '@material-ui/core'; import { lightTheme } from '@backstage/theme'; @@ -25,6 +25,9 @@ import { } from '@backstage/test-utils'; import { starredEntitiesApiRef } from '@backstage/plugin-catalog-react'; import { DefaultStarredEntitiesApi } from '@backstage/plugin-catalog'; +import Observable from 'zen-observable'; +import { stringifyEntityRef } from '@backstage/catalog-model'; +import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; describe('CardHeader', () => { it('should select the correct theme from the theme provider from the header', () => { @@ -93,4 +96,93 @@ describe('CardHeader', () => { expect(getByText('service')).toBeInTheDocument(); }); + + it('should enable favoriting of the entity', async () => { + const starredEntitiesApi = { + starredEntitie$: () => new Observable(() => {}), + toggleStarred: jest.fn(async () => {}), + }; + + const mockTemplate: TemplateEntityV1beta3 = { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'bob' }, + spec: { + steps: [], + type: 'service', + }, + }; + + const { getByRole } = await renderInTestApp( + + + , + ); + + const favorite = getByRole('button', { name: 'favorite' }); + + await fireEvent.click(favorite); + + expect(starredEntitiesApi.toggleStarred).toHaveBeenCalledWith( + stringifyEntityRef(mockTemplate), + ); + }); + + it('should render the name of the entity', async () => { + const { getByText } = await renderInTestApp( + + + , + ); + + expect(getByText('bob')).toBeInTheDocument(); + }); + + it('should render the title of the entity in favor of the name if it is provided', async () => { + const { getByText } = await renderInTestApp( + + + , + ); + + expect(getByText('Iamtitle')).toBeInTheDocument(); + }); }); diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx index db134bb18e..3a5785a4f6 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx @@ -22,7 +22,7 @@ import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; import { FavoriteEntity } from '@backstage/plugin-catalog-react'; const useStyles = makeStyles( - theme => ({ + () => ({ header: { backgroundImage: ({ cardBackgroundImage }) => cardBackgroundImage, },