feat(deals): StatusRuToSlugMapper — remap supplier RU statuses to 5-slug funnel
This commit is contained in:
@@ -4,20 +4,32 @@ declare(strict_types=1);
|
||||
|
||||
use App\Services\Import\StatusRuToSlugMapper;
|
||||
|
||||
test('маппит все 14 канонических статусов §6.4', function (): void {
|
||||
$mapper = new StatusRuToSlugMapper;
|
||||
test('старые русские статусы поставщика мапятся в 5 новых slug-ов', function (): void {
|
||||
$m = new StatusRuToSlugMapper;
|
||||
|
||||
expect($mapper->toSlug('Новые'))->toBe('new')
|
||||
->and($mapper->toSlug('Оплачено'))->toBe('paid')
|
||||
->and($mapper->toSlug('Конечный недозвон'))->toBe('final_missed')
|
||||
->and($mapper->map())->toHaveCount(14);
|
||||
expect($m->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');
|
||||
});
|
||||
|
||||
test('тримит пробелы вокруг значения', function (): void {
|
||||
expect((new StatusRuToSlugMapper)->toSlug(' Переговоры '))->toBe('negotiations');
|
||||
expect((new StatusRuToSlugMapper)->toSlug(' Переговоры '))->toBe('in_progress');
|
||||
});
|
||||
|
||||
test('возвращает null для неизвестного статуса', function (): void {
|
||||
expect((new StatusRuToSlugMapper)->toSlug('Архив'))->toBeNull()
|
||||
expect((new StatusRuToSlugMapper)->toSlug('Абракадабра'))->toBeNull()
|
||||
->and((new StatusRuToSlugMapper)->toSlug(''))->toBeNull();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user