toSlug('Новые'))->toBe('new') ->and($m->toSlug('Просмотрено'))->toBe('viewed') ->and($m->toSlug('Проработан'))->toBe('in_progress') ->and($m->toSlug('Переговоры'))->toBe('in_progress') ->and($m->toSlug('Конечный недозвон'))->toBe('in_progress') ->and($m->toSlug('Оплачено'))->toBe('won') ->and($m->toSlug('Закрыто и не реализовано'))->toBe('lost'); }); test('новые русские названия 5-статусной воронки мапятся', function (): void { $m = new StatusRuToSlugMapper; expect($m->toSlug('Новая сделка'))->toBe('new') ->and($m->toSlug('В работе'))->toBe('in_progress') ->and($m->toSlug('Сделка'))->toBe('won') ->and($m->toSlug('Не реализовано'))->toBe('lost') ->and($m->map())->toHaveCount(18); // 5 новых + 13 старых RU-названий }); test('тримит пробелы вокруг значения', function (): void { expect((new StatusRuToSlugMapper)->toSlug(' Переговоры '))->toBe('in_progress'); }); test('возвращает null для неизвестного статуса', function (): void { expect((new StatusRuToSlugMapper)->toSlug('Абракадабра'))->toBeNull() ->and((new StatusRuToSlugMapper)->toSlug(''))->toBeNull(); });