import { normalizeMaterialPreviewUrl, pickFirstMaterialPreviewUrl, } from '@/lib/material-preview-url' describe('material-preview-url', () => { test('URL 字段只保留非空字符串', () => { expect(normalizeMaterialPreviewUrl('/uploads/preview.webp')).toBe('/uploads/preview.webp') expect(normalizeMaterialPreviewUrl(' https://cdn.example.com/cover.jpg ')) .toBe('https://cdn.example.com/cover.jpg') expect(normalizeMaterialPreviewUrl(true)).toBeNull() expect(normalizeMaterialPreviewUrl(false)).toBeNull() expect(normalizeMaterialPreviewUrl(null)).toBeNull() expect(normalizeMaterialPreviewUrl(1)).toBeNull() expect(normalizeMaterialPreviewUrl({ url: '/not-a-string.jpg' })).toBeNull() expect(normalizeMaterialPreviewUrl(' ')).toBeNull() }) test('合法相对地址和带签名的绝对地址保持兼容', () => { const signedUrl = 'https://cdn.example.com/preview.webp?token=a%2Bb&expires=999' expect(normalizeMaterialPreviewUrl('/uploads/preview.webp')).toBe('/uploads/preview.webp') expect(normalizeMaterialPreviewUrl(signedUrl)).toBe(signedUrl) }) test('异常布尔值或空值不会挡住后续合法预览图', () => { expect(pickFirstMaterialPreviewUrl( true, null, '', ' /uploads/from-display-images.webp ', )).toBe('/uploads/from-display-images.webp') }) })