Files
SkinbaseNova/resources/js/components/Studio/StudioContentBrowser.test.jsx

100 lines
2.7 KiB
JavaScript

import React from 'react'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { cleanup, render, screen } from '@testing-library/react'
import StudioContentBrowser from './StudioContentBrowser'
const routerGet = vi.fn()
const routerReload = vi.fn()
vi.mock('@inertiajs/react', () => ({
router: {
get: routerGet,
reload: routerReload,
},
}))
vi.mock('../../utils/studioEvents', () => ({
studioSurface: () => '/studio/artworks',
trackStudioEvent: vi.fn(),
}))
vi.mock('./ConfirmDangerModal', () => ({
default: () => null,
}))
describe('StudioContentBrowser filters', () => {
afterEach(() => {
cleanup()
vi.clearAllMocks()
})
it('renders artwork filter dropdowns with NovaSelect instead of native selects', () => {
const { container } = render(
<StudioContentBrowser
hideModuleFilter
listing={{
filters: {
module: 'artworks',
bucket: 'all',
q: '',
sort: 'updated_desc',
content_type: 'all',
category: 'all',
tag: '',
},
items: [],
meta: {
current_page: 1,
last_page: 1,
per_page: 24,
total: 0,
},
bucket_options: [
{ value: 'all', label: 'All' },
{ value: 'published', label: 'Published' },
],
sort_options: [
{ value: 'updated_desc', label: 'Recently updated' },
{ value: 'views_desc', label: 'Most viewed' },
],
advanced_filters: [
{
key: 'content_type',
label: 'Content type',
type: 'select',
value: 'all',
options: [
{ value: 'all', label: 'All content types' },
{ value: '3d', label: '3D' },
],
},
{
key: 'category',
label: 'Category',
type: 'select',
value: 'all',
options: [
{ value: 'all', label: 'All categories' },
{ value: 'abstract', label: 'Abstract', content_type_slug: 'all' },
],
},
{
key: 'tag',
label: 'Tag',
type: 'search',
value: '',
placeholder: 'Filter by tag',
},
],
}}
/>,
)
expect(container.querySelectorAll('select')).toHaveLength(0)
expect(screen.getAllByRole('combobox')).toHaveLength(4)
expect(screen.getByText('Status')).not.toBeNull()
expect(screen.getByText('Sort')).not.toBeNull()
expect(screen.getByText('Content type')).not.toBeNull()
expect(screen.getByText('Category')).not.toBeNull()
})
})