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(); 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( } 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( ); expect(rtlScreen.getAllByRole('term')).toHaveLength( Object.keys(meta).length ); }); });