<?php

declare(strict_types=1);

use App\Services\Import\StatusRuToSlugMapper;

test('старые русские статусы поставщика мапятся в 5 новых slug-ов', function (): void {
    $m = new StatusRuToSlugMapper;

    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')
        ->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();
});
