/
kreyndelHam
/
Konstructorium
Обзор
Документация
Войти
/
kreyndelHam
/
Konstructorium
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
Безопасность
dev
frontend/src/utils/imageUtils.test.js
45 строк
2 KB
MihahamYT
Images working
24 май 2026, 16:44
24 май 2026, 16:44
63a5a31
Код
Авторство
О чём код?
import { describe, expect, it } from 'vitest' import { getImageUrl, getPrimaryProductImageUrl, getVisibleProductImages, PRODUCT_IMAGE_PLACEHOLDER, } from './imageUtils' describe('getImageUrl', () => { it('returns placeholder for empty input', () => { expect(getImageUrl(null)).toBe(PRODUCT_IMAGE_PLACEHOLDER) expect(getImageUrl('')).toBe(PRODUCT_IMAGE_PLACEHOLDER) }) it('keeps relative /media paths and adds cache buster', () => { expect(getImageUrl('/media/product_images/foo.jpg')).toBe('/media/product_images/foo.jpg?v=5') }) it('normalizes absolute backend URLs to same-origin /media paths', () => { expect(getImageUrl('http://127.0.0.1:8003/media/product_images/foo.jpg')).toBe('/media/product_images/foo.jpg?v=5') expect(getImageUrl('http://product_service:8000/media/product_images/foo.jpg')).toBe('/media/product_images/foo.jpg?v=5') expect(getImageUrl('http://localhost:3000/media/product_images/foo.jpg')).toBe('/media/product_images/foo.jpg?v=5') }) it('adds /media prefix for bare storage paths', () => { expect(getImageUrl('product_images/foo.jpg')).toBe('/media/product_images/foo.jpg?v=5') }) }) describe('product image helpers', () => { it('filters out image records without URLs', () => { const product = { images: [{ image: '/media/a.jpg' }, { image: null }, { image: '' }], } expect(getVisibleProductImages(product)).toEqual([{ image: '/media/a.jpg' }]) }) it('returns primary image URL for cards', () => { const product = { images: [{ image: null }, { image: '/media/product_images/foo.jpg' }], } expect(getPrimaryProductImageUrl(product)).toBe('/media/product_images/foo.jpg?v=5') }) })