Files
aiturk-hermes-ide/apps/desktop/src/hooks/use-image-download.test.ts
T

41 lines
1.8 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { downloadFilename, imageFilename } from './use-image-download'
describe('imageFilename', () => {
it('takes the last path segment of a URL', () => {
expect(imageFilename('https://v3.fal.media/files/kangaroo/pic.png')).toBe('pic.png')
})
it('falls back to "image" when there is no usable segment', () => {
expect(imageFilename('https://example.com/')).toBe('image')
expect(imageFilename(undefined)).toBe('image')
})
})
describe('downloadFilename', () => {
it('keeps a name that already has a known image extension', () => {
expect(downloadFilename('https://example.com/a/photo.jpg', 'image/jpeg')).toBe('photo.jpg')
expect(downloadFilename('https://example.com/a/photo.webp', '')).toBe('photo.webp')
})
it('appends a MIME-derived extension to extensionless content hashes', () => {
expect(downloadFilename('https://v3.fal.media/files/x/MKZV6h-RrKLVCOKp9bGfE_YuJPemAQ', 'image/jpeg')).toBe(
'MKZV6h-RrKLVCOKp9bGfE_YuJPemAQ.jpg'
)
expect(downloadFilename('https://cdn.example.com/abc123', 'image/webp')).toBe('abc123.webp')
})
it('handles MIME parameters and unknown types', () => {
expect(downloadFilename('https://cdn.example.com/abc123', 'image/png; charset=binary')).toBe('abc123.png')
expect(downloadFilename('https://cdn.example.com/abc123', 'application/octet-stream')).toBe('abc123.png')
expect(downloadFilename('https://cdn.example.com/abc123', undefined)).toBe('abc123.png')
})
it('does not treat a dotted hash suffix as an extension', () => {
// A name like "photo.v2" has an extname but not a known image one — the
// MIME extension still gets appended so the OS can open the file.
expect(downloadFilename('https://cdn.example.com/photo.v2', 'image/png')).toBe('photo.v2.png')
})
})