/** @jest-environment node */ import { buildMaterialPublicDisplayPath, buildPublicDisplayObjectPath, buildPublicDisplayUrl, buildTaskDetailPublicDisplayPath, buildWhiteBackgroundPublicDisplayPath, } from '@/lib/public-display' describe('public display helpers', () => { const originalEnv = { ...process.env } beforeEach(() => { process.env.S3_PUBLIC_DOMAIN = 'https://s3.jiansun.vip/gongxiangpan' delete process.env.S3_FILE_PATH }) afterEach(() => { process.env = { ...originalEnv } }) test('builds normalized public-display object paths', () => { expect(buildPublicDisplayObjectPath('/task-detail/material-1/main/cover.webp')).toBe( 'public-display/task-detail/material-1/main/cover.webp', ) expect(buildPublicDisplayObjectPath('white-background\\material-1\\sku-1\\front.webp')).toBe( 'public-display/white-background/material-1/sku-1/front.webp', ) }) test('builds public-display URLs from S3_PUBLIC_DOMAIN', () => { expect(buildPublicDisplayUrl('task-detail/material-1/detail/detail-1.webp')).toBe( 'https://s3.jiansun.vip/gongxiangpan/public-display/task-detail/material-1/detail/detail-1.webp', ) }) test('includes S3_FILE_PATH in public-display URLs when configured', () => { process.env.S3_FILE_PATH = '由壹点AI/' expect(buildPublicDisplayUrl('white-background/material-1/sku-1/front.webp')).toBe( 'https://s3.jiansun.vip/gongxiangpan/由壹点AI/public-display/white-background/material-1/sku-1/front.webp', ) }) test('builds common display relative paths', () => { expect(buildMaterialPublicDisplayPath('preview-1.webp')).toBe('materials/preview-1.webp') expect(buildTaskDetailPublicDisplayPath('material-1', 'detail', 'detail-1.webp')).toBe( 'task-detail/material-1/detail/detail-1.webp', ) expect( buildWhiteBackgroundPublicDisplayPath('material-1', 'sku-1', 'other/01-side.webp'), ).toBe('white-background/material-1/sku-1/other/01-side.webp') }) })