import { render, screen, waitFor } from '@testing-library/react' import userEvent from '@testing-library/user-event' import UploadModal from '@/components/UploadModal' jest.mock('next/image', () => ({ __esModule: true, default: (props: any) => { const { priority, fill, unoptimized, sizes, ...rest } = props return }, })) jest.mock('@/hooks/useCategoryData', () => ({ useCategoryData: () => ({ data: { categories: [], scenes: [], platforms: [], productCategories: [], }, refreshCategories: jest.fn(), refreshScenes: jest.fn(), }), })) jest.mock('@/components/upload/ProductPackageUploader', () => ({ __esModule: true, default: () =>
, })) jest.mock('@/components/upload/VideoScreenshotUploader', () => ({ __esModule: true, default: () =>
, })) jest.mock('@/components/upload/TaskPageUploader', () => ({ __esModule: true, default: () =>
, })) describe('UploadModal - 任务-其他', () => { beforeEach(() => { jest.clearAllMocks() global.fetch = jest.fn().mockResolvedValue({ ok: true, json: async () => ({ materialTypes: ['3D场景', '任务-其他'], }), }) as any }) test('任务-其他应使用公共上传面板形式,只保留任务号 + 预览图片 + 素材文件', async () => { const user = userEvent.setup() render() const materialTypeSelect = (await screen.findAllByRole('combobox'))[0] await user.selectOptions(materialTypeSelect, '任务-其他') await waitFor(() => { expect(screen.getByLabelText('任务号 *')).toBeInTheDocument() }) expect(screen.getByText('预览图片 *')).toBeInTheDocument() expect(screen.getByText('素材文件 *')).toBeInTheDocument() expect(screen.getByText('支持格式:压缩包(.zip / .rar / .7z)')).toBeInTheDocument() expect(screen.queryByLabelText('SPU型号 *')).not.toBeInTheDocument() expect(screen.queryByText('压缩包源文件 *')).not.toBeInTheDocument() expect(screen.queryByText('预览图 *')).not.toBeInTheDocument() }) })