Files
SkinbaseNova/resources/js/components/artwork/CreatorSpotlight.test.jsx
2026-04-18 17:02:56 +02:00

79 lines
2.4 KiB
JavaScript

import React from 'react'
import { afterEach, describe, expect, it } from 'vitest'
import { cleanup, render, screen } from '@testing-library/react'
import CreatorSpotlight from './CreatorSpotlight'
describe('CreatorSpotlight related rail', () => {
afterEach(() => {
cleanup()
})
it('shows only artworks from the same author id', () => {
render(
<CreatorSpotlight
artwork={{
canonical_url: '/art/470/words',
viewer: { id: 2 },
user: { id: 2, name: 'psych0', username: 'psych0', profile_url: '/@psych0', followers_count: 25 },
credits: {},
}}
presentSq={{ url: '/thumb/current.jpg' }}
related={[
{
id: 101,
title: 'Same author work',
author: 'Completely different display name',
author_id: 2,
publisher_type: 'user',
publisher_id: 2,
url: '/art/101/same-author-work',
thumb: '/thumb/101.jpg',
},
{
id: 202,
title: 'Wrong author work',
author: 'psych0',
author_id: 99,
publisher_type: 'user',
publisher_id: 99,
url: '/art/202/wrong-author-work',
thumb: '/thumb/202.jpg',
},
]}
/>,
)
expect(screen.getByText(/more from psych0/i)).not.toBeNull()
expect(screen.getByRole('link', { name: /same author work/i }).getAttribute('href')).toBe('/art/101/same-author-work')
expect(screen.queryByRole('link', { name: /wrong author work/i })).toBeNull()
})
it('hides the rail when there are no same-author works', () => {
render(
<CreatorSpotlight
artwork={{
canonical_url: '/art/470/words',
viewer: { id: 2 },
user: { id: 2, name: 'psych0', username: 'psych0', profile_url: '/@psych0', followers_count: 25 },
credits: {},
}}
presentSq={{ url: '/thumb/current.jpg' }}
related={[
{
id: 202,
title: 'Wrong author work',
author: 'psych0',
author_id: 99,
publisher_type: 'user',
publisher_id: 99,
url: '/art/202/wrong-author-work',
thumb: '/thumb/202.jpg',
},
]}
/>,
)
expect(screen.queryByText(/more from psych0/i)).toBeNull()
expect(screen.queryByRole('link', { name: /wrong author work/i })).toBeNull()
})
})