import { describe, it, expect } from 'vitest'; import { humanizeMessage } from '../../resources/js/lib/advertising/humanizeCreativeErrors'; /** * humanizeMessage — заменяет технические имена полей (title/title2/text/href/image) * в сообщениях 422 от сервера (B1 CreativeValidator) на русские подписи полей формы. */ describe('humanizeCreativeErrors — humanizeMessage', () => { it('заменяет "в поле title" на "в поле «Заголовок»"', () => { const result = humanizeMessage('Количество символов в поле title не может превышать 56.'); expect(result).not.toMatch(/\btitle\b/); expect(result).toContain('«Заголовок»'); expect(result).toBe('Количество символов в поле «Заголовок» не может превышать 56.'); }); it('заменяет "Поле text" на "Поле «Текст объявления»"', () => { const result = humanizeMessage('Поле text обязательно для заполнения.'); expect(result).not.toMatch(/\btext\b/); expect(result).toContain('«Текст объявления»'); expect(result).toBe('Поле «Текст объявления» обязательно для заполнения.'); }); it('заменяет "Поле href" на "Поле «Ссылка на сайт»"', () => { const result = humanizeMessage('Поле href должно содержать корректный URL.'); expect(result).not.toMatch(/\bhref\b/); expect(result).toContain('«Ссылка на сайт»'); expect(result).toBe('Поле «Ссылка на сайт» должно содержать корректный URL.'); }); it('заменяет "в поле title2" на "в поле «Второй заголовок»"', () => { const result = humanizeMessage('Значение в поле title2 некорректно.'); expect(result).not.toMatch(/\btitle2\b/); expect(result).toContain('«Второй заголовок»'); }); it('заменяет "Поле image" на "Поле «Картинка»"', () => { const result = humanizeMessage('Поле image обязательно для заполнения.'); expect(result).not.toMatch(/\bimage\b/); expect(result).toContain('«Картинка»'); }); it('не трогает сообщение без известного технического имени поля', () => { const result = humanizeMessage('Внутренняя ошибка сервера.'); expect(result).toBe('Внутренняя ошибка сервера.'); }); });