33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { resolveUploadEncoding } from './imageUpload'
|
|
|
|
describe('resolveUploadEncoding', () => {
|
|
it('带透明通道的图必须输出 PNG,避免透明区域被压成实色', () => {
|
|
const encoding = resolveUploadEncoding('home-banner', true)
|
|
|
|
expect(encoding.outputType).toBe('image/png')
|
|
expect(encoding.extension).toBe('png')
|
|
expect(encoding.maxSide).toBe(1920)
|
|
expect(encoding.quality).toBe(0.84)
|
|
})
|
|
|
|
it('不透明图继续用 WebP 压缩', () => {
|
|
const encoding = resolveUploadEncoding('home-banner', false)
|
|
|
|
expect(encoding.outputType).toBe('image/webp')
|
|
expect(encoding.extension).toBe('webp')
|
|
})
|
|
|
|
it('未登记的 scene 使用兜底参数', () => {
|
|
const encoding = resolveUploadEncoding('unknown-scene', false)
|
|
|
|
expect(encoding.maxSide).toBe(1600)
|
|
expect(encoding.quality).toBe(0.82)
|
|
})
|
|
|
|
it('头像等小尺寸场景保留各自的边长上限', () => {
|
|
expect(resolveUploadEncoding('avatar', false).maxSide).toBe(512)
|
|
expect(resolveUploadEncoding('qrcode', true).maxSide).toBe(2560)
|
|
})
|
|
})
|