Files
portal/app/tests/Unit/Sms/OperatorNormalizerTest.php
T

35 lines
1.5 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
use App\Services\Sms\OperatorNormalizer;
dataset('operators', [
['МТС', 'mts'],
['ПАО "МТС"', 'mts'],
['mts', 'mts'],
['Мобильные ТелеСистемы', 'mts'],
['ВымпелКом', 'beeline'],
['ПАО ВымпелКом', 'beeline'],
['Билайн', 'beeline'],
['МегаФон', 'megafon'],
['Tele2', 'tele2'],
['Т2 Мобайл', 'tele2'],
['Yota', 'yota'],
// 🪤 У Мотива ДВА сырых написания, и приходят они из РАЗНЫХ мест: ДаДата
// отдаёт торговое имя, реестр Россвязи — юридическое. Слова «Мотив» в
// реестре нет ни разу (замер по DEF-9xx.csv 10.08.2026: 29 диапазонов
// ООО "ЕКАТЕРИНБУРГ-2000"). Знай словарь только одно из двух — половина
// номеров молча выпала бы, и выглядело бы это как «ДаДата не ответила».
['Мотив', 'motiv'],
['МОТИВ', 'motiv'],
['ООО "ЕКАТЕРИНБУРГ-2000"', 'motiv'],
['ООО «Екатеринбург-2000»', 'motiv'],
['', ''],
['Космическая связь', ''],
]);
it('приводит имя оператора к каноническому ключу', function (string $raw, string $expected) {
expect((new OperatorNormalizer)->canonical($raw))->toBe($expected);
})->with('operators');