From 664837208f96cfd05cd7fa783e46145896698233 Mon Sep 17 00:00:00 2001 From: m-tartari <37861893+m-tartari@users.noreply.github.com> Date: Fri, 23 May 2025 14:19:02 +0000 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(atoms):=20update?= =?UTF-8?q?=20Publication=20props?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../atoms/Publication/Publication.test.tsx | 14 +++---- .../atoms/Publication/Publication.tsx | 36 ------------------ src/components/atoms/Publication/index.tsx | 38 ++++++++++++++++++- .../pages/CurriculumPage/CurriculumPage.tsx | 2 +- 4 files changed, 45 insertions(+), 45 deletions(-) delete mode 100644 src/components/atoms/Publication/Publication.tsx diff --git a/src/components/atoms/Publication/Publication.test.tsx b/src/components/atoms/Publication/Publication.test.tsx index 99de24c..53b7deb 100644 --- a/src/components/atoms/Publication/Publication.test.tsx +++ b/src/components/atoms/Publication/Publication.test.tsx @@ -1,11 +1,9 @@ import { render, screen } from '@testing-library/react' -import userEvent from '@testing-library/user-event' import { Box } from '@mui/material' -import Publication from '.' +import Publication from './index.js' vi.stubGlobal('open', vi.fn()) -const open = vi.spyOn(window, 'open') describe('Publication component', () => { const defaultProps = { @@ -13,10 +11,10 @@ describe('Publication component', () => { authors: 'Test Author', title: 'Test Title', location: 'Test Location', - link: 'https://test.com', + href: 'https://test.com', } test('renders without crashing and displays the correct year, authors, title, and location', () => { - render() + render() expect(screen.getByText(defaultProps.year)).toBeInTheDocument() expect(screen.getByText(defaultProps.title)).toBeInTheDocument() expect(screen.getByText(defaultProps.authors, { exact: false })).toBeInTheDocument() @@ -26,8 +24,10 @@ describe('Publication component', () => { test('opens the correct link when the link button is clicked', async () => { render() - await userEvent.click(screen.getByRole('button')) - expect(open).toHaveBeenCalledWith(defaultProps.link, '_blank') + const link = screen.getByRole('link') + expect(link).toHaveAttribute('href', defaultProps.href) + expect(link).toHaveAttribute('target', '_blank') + expect(link).toHaveAttribute('rel', 'noopener noreferrer') }) test('renders correctly with a custom base component', () => { diff --git a/src/components/atoms/Publication/Publication.tsx b/src/components/atoms/Publication/Publication.tsx deleted file mode 100644 index 03cb89a..0000000 --- a/src/components/atoms/Publication/Publication.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react' -import { Box, SxProps, Theme, Typography, TypographyProps } from '@mui/material' -import { ExternalIconLink } from '..' - -type AwardEntryProps = { - year: string | number - title: string - authors: React.ReactNode - location: string - link?: string - titleProps?: TypographyProps - Component?: React.ElementType - sx?: SxProps -} - -const Publication = ({ Component = Box, ...props }: AwardEntryProps) => { - return ( - - - - {props.year} - - - {props.authors},{' '} - - {props.title} - - , In: {props.location} - {typeof props.link !== 'undefined' && } - - - - ) -} - -export default Publication diff --git a/src/components/atoms/Publication/index.tsx b/src/components/atoms/Publication/index.tsx index 869b92d..baa3742 100644 --- a/src/components/atoms/Publication/index.tsx +++ b/src/components/atoms/Publication/index.tsx @@ -1 +1,37 @@ -export { default } from './Publication' +import React from 'react' +import { Box, SxProps, Theme, Typography, TypographyProps } from '@mui/material' + +import { ExternalIconLink } from 'components/atoms/IconLinks/index.js' + +type AwardEntryProps = { + year: string | number + title: string + authors: React.ReactNode + location: string + href?: string + titleProps?: TypographyProps + Component?: React.ElementType + sx?: SxProps +} + +const Publication = ({ Component = Box, ...props }: AwardEntryProps) => { + return ( + + + + {props.year} + + + {props.authors},{' '} + + {props.title} + + , In: {props.location} + {typeof props.href !== 'undefined' && } + + + + ) +} + +export default Publication diff --git a/src/components/pages/CurriculumPage/CurriculumPage.tsx b/src/components/pages/CurriculumPage/CurriculumPage.tsx index d947ffc..dafb63d 100644 --- a/src/components/pages/CurriculumPage/CurriculumPage.tsx +++ b/src/components/pages/CurriculumPage/CurriculumPage.tsx @@ -419,7 +419,7 @@ const Curriculum = () => { } location="ROMANSY 23 - Robot Design, Dynamics and Control. CISM International Centre for Mechanical Sciences (Courses and Lectures), vol 601. Springer, Cham." - link="https://doi.org/10.1007/978-3-030-58380-4_7" + href="https://doi.org/10.1007/978-3-030-58380-4_7" />