import { describe, it, expect } from 'vitest'; import { cleanModelCard } from '../clean-model-card'; const makeRaw = (overrides = {}) => ({ title: 'Model Name', videos_count: 10, video_thumb_urls: { webp: { '320x180': 'https://img.com/s.webp' } }, primary_image_url: 'https://img.com/primary.jpg', guid: 'model-1', parameters: [ { name: 'birthplace_country', values: [{ title: 'USA', name: 'usa' }] }, { name: 'guy_type', values: [{ title: 'Twink' }] }, { name: 'ethnicity', values: [{ title: 'Asian' }] }, { name: 'age', values: [{ title: '25' }] }, ], ...overrides, }); describe('cleanModelCard', () => { it('полные данные', () => { const result = cleanModelCard(makeRaw() as any); expect(result.title).toBe('Model Name'); expect(result.videosCount).toBe(10); expect(result.thumbUrl).toBe('https://img.com/s.webp'); expect(result.guid).toBe('model-1'); expect(result.country).toEqual({ title: 'USA', name: 'usa' }); }); it('параметры: guy_type, ethnicity, age', () => { const result = cleanModelCard(makeRaw() as any); expect(result.parameters).toEqual([ { title: 'guy_type', value: 'Twink' }, { title: 'ethnicity', value: 'Asian' }, { title: 'age', value: '25' }, ]); }); it('без age → параметры без age', () => { const raw = makeRaw({ parameters: [ { name: 'birthplace_country', values: [{ title: 'USA', name: 'usa' }] }, { name: 'guy_type', values: [{ title: 'Twink' }] }, { name: 'ethnicity', values: [{ title: 'Asian' }] }, ], }); const result = cleanModelCard(raw as any); expect(result.parameters).toEqual([ { title: 'guy_type', value: 'Twink' }, { title: 'ethnicity', value: 'Asian' }, ]); }); it('параметр с пустым values отбрасывается', () => { const raw = makeRaw({ parameters: [ { name: 'guy_type', values: [] }, { name: 'ethnicity', values: [{ title: 'Asian' }] }, { name: 'age', values: [{ title: '25' }] }, ], }); const result = cleanModelCard(raw as any); expect(result.parameters).toEqual([ { title: 'ethnicity', value: 'Asian' }, { title: 'age', value: '25' }, ]); }); it('пустые параметры', () => { const raw = makeRaw({ parameters: [] }); const result = cleanModelCard(raw as any); expect(result.country).toEqual({ title: '', name: '' }); expect(result.parameters).toEqual([]); }); });