diff options
Diffstat (limited to 'src/components/organisms/post-preview/post-preview.test.tsx')
| -rw-r--r-- | src/components/organisms/post-preview/post-preview.test.tsx | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/components/organisms/post-preview/post-preview.test.tsx b/src/components/organisms/post-preview/post-preview.test.tsx new file mode 100644 index 0000000..78012ed --- /dev/null +++ b/src/components/organisms/post-preview/post-preview.test.tsx @@ -0,0 +1,66 @@ +import { describe, expect, it } from '@jest/globals'; +import NextImage from 'next/image'; +import { render, screen as rtlScreen } from '../../../../tests/utils'; +import { PostPreview } from './post-preview'; +import type { PostPreviewMetaData } from './post-preview-meta'; + +describe('PostPreview', () => { + it('renders an excerpt with a heading and a link', () => { + const excerpt = 'At necessitatibus id soluta adipisci quibusdam.'; + const heading = 'impedit et ea'; + const url = '#quia'; + + render(<PostPreview excerpt={excerpt} heading={heading} url={url} />); + + expect(rtlScreen.getByRole('heading')).toHaveTextContent(heading); + expect(rtlScreen.getByRole('link', { name: heading })).toHaveAttribute( + 'href', + url + ); + expect(rtlScreen.getByText(excerpt)).toBeInTheDocument(); + }); + + it('can render a cover', () => { + const excerpt = 'At necessitatibus id soluta adipisci quibusdam.'; + const heading = 'impedit et ea'; + const url = '#quia'; + const altTxt = 'alias consequatur quod'; + + render( + <PostPreview + cover={ + <NextImage + alt={altTxt} + height={480} + src="https://picsum.photos/640/480" + width={640} + /> + } + excerpt={excerpt} + heading={heading} + url={url} + /> + ); + + expect(rtlScreen.getByRole('img')).toHaveAccessibleName(altTxt); + }); + + it('can render some meta', () => { + const excerpt = 'At necessitatibus id soluta adipisci quibusdam.'; + const heading = 'impedit et ea'; + const url = '#quia'; + const meta = { + author: 'Noah_Gleason48', + publicationDate: '2023', + wordsCount: 250, + } satisfies PostPreviewMetaData; + + render( + <PostPreview excerpt={excerpt} heading={heading} meta={meta} url={url} /> + ); + + expect(rtlScreen.getAllByRole('term')).toHaveLength( + Object.keys(meta).length + ); + }); +}); |
