|
| 1 | +import { describe, it, expect } from '@jest/globals'; |
| 2 | +import { normalizeImageSrc } from '../../normalizeImageSrc.js'; |
| 3 | + |
| 4 | +describe('normalizeImageSrc (file-manager pick normalization)', () => { |
| 5 | + it('collapses duplicate slashes in local media paths', () => { |
| 6 | + expect(normalizeImageSrc('/assets//file.jpg')).toBe('/assets/file.jpg'); |
| 7 | + expect(normalizeImageSrc('/assets///a//b.png')).toBe('/assets/a/b.png'); |
| 8 | + }); |
| 9 | + |
| 10 | + it('keeps a normal local path untouched', () => { |
| 11 | + expect(normalizeImageSrc('/assets/catalog/1/img.jpg')).toBe( |
| 12 | + '/assets/catalog/1/img.jpg' |
| 13 | + ); |
| 14 | + }); |
| 15 | + |
| 16 | + it('never touches absolute URLs (cloud storage returns these)', () => { |
| 17 | + const s3 = |
| 18 | + 'https://my-bucket.s3.ap-southeast-2.amazonaws.com/catalog/img.jpg'; |
| 19 | + expect(normalizeImageSrc(s3)).toBe(s3); |
| 20 | + const gcs = 'https://storage.googleapis.com/my-bucket/img.jpg'; |
| 21 | + expect(normalizeImageSrc(gcs)).toBe(gcs); |
| 22 | + const azure = 'https://acct.blob.core.windows.net/media/img.jpg'; |
| 23 | + expect(normalizeImageSrc(azure)).toBe(azure); |
| 24 | + expect(normalizeImageSrc('http://localhost:9000/bucket/img.jpg')).toBe( |
| 25 | + 'http://localhost:9000/bucket/img.jpg' |
| 26 | + ); |
| 27 | + }); |
| 28 | + |
| 29 | + it('never touches protocol-relative URLs', () => { |
| 30 | + expect(normalizeImageSrc('//cdn.example.com/img.jpg')).toBe( |
| 31 | + '//cdn.example.com/img.jpg' |
| 32 | + ); |
| 33 | + }); |
| 34 | + |
| 35 | + it('preserves consecutive slashes inside an absolute URL path (valid S3 keys)', () => { |
| 36 | + const doubled = 'https://bucket.s3.amazonaws.com/folder//img.jpg'; |
| 37 | + expect(normalizeImageSrc(doubled)).toBe(doubled); |
| 38 | + }); |
| 39 | + |
| 40 | + it('returns an empty string for null/undefined/empty input', () => { |
| 41 | + expect(normalizeImageSrc('')).toBe(''); |
| 42 | + expect(normalizeImageSrc(null)).toBe(''); |
| 43 | + expect(normalizeImageSrc(undefined)).toBe(''); |
| 44 | + }); |
| 45 | +}); |
0 commit comments