|
4 | 4 | import { createLogger } from '@sim/logger' |
5 | 5 | import { describe, expect, it } from 'vitest' |
6 | 6 | import { |
| 7 | + ensureFileNameExtension, |
7 | 8 | extractStorageKey, |
8 | 9 | extractWorkspaceIdFromStorageKey, |
| 10 | + getExtensionFromMimeType, |
9 | 11 | getMimeTypeFromExtension, |
10 | 12 | inferContextFromKey, |
11 | 13 | isAbortError, |
@@ -311,3 +313,25 @@ describe('resolveMediaMimeType', () => { |
311 | 313 | expect(resolveMediaMimeType(null, 'weird.bin', 'video')).toBe('video/mp4') |
312 | 314 | }) |
313 | 315 | }) |
| 316 | + |
| 317 | +describe('getExtensionFromMimeType', () => { |
| 318 | + it('ignores content-type parameters', () => { |
| 319 | + expect(getExtensionFromMimeType('image/png')).toBe('png') |
| 320 | + expect(getExtensionFromMimeType('text/html; charset=utf-8')).toBe('html') |
| 321 | + expect(getExtensionFromMimeType('application/octet-stream')).toBeNull() |
| 322 | + }) |
| 323 | +}) |
| 324 | + |
| 325 | +describe('ensureFileNameExtension', () => { |
| 326 | + it('appends the content-type extension only when the name has none', () => { |
| 327 | + expect(ensureFileNameExtension('navbar_2', 'image/png')).toBe('navbar_2.png') |
| 328 | + expect(ensureFileNameExtension('download (641)', 'image/jpeg; charset=binary')).toBe( |
| 329 | + 'download (641).jpg' |
| 330 | + ) |
| 331 | + expect(ensureFileNameExtension('hero.png', 'image/jpeg')).toBe('hero.png') |
| 332 | + expect(ensureFileNameExtension('site.webmanifest', 'application/json')).toBe('site.webmanifest') |
| 333 | + expect(ensureFileNameExtension('Sim.ai <> RVTech', 'text/html')).toBe('Sim.ai <> RVTech.html') |
| 334 | + expect(ensureFileNameExtension('blob', 'application/octet-stream')).toBe('blob') |
| 335 | + expect(ensureFileNameExtension('blob', null)).toBe('blob') |
| 336 | + }) |
| 337 | +}) |
0 commit comments