2026-07-23 11:52:28 +03:00
|
|
|
|
<?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'],
|
2026-08-10 20:27:55 +03:00
|
|
|
|
// 🪤 У Мотива ДВА сырых написания, и приходят они из РАЗНЫХ мест: ДаДата
|
|
|
|
|
|
// отдаёт торговое имя, реестр Россвязи — юридическое. Слова «Мотив» в
|
|
|
|
|
|
// реестре нет ни разу (замер по DEF-9xx.csv 10.08.2026: 29 диапазонов
|
|
|
|
|
|
// ООО "ЕКАТЕРИНБУРГ-2000"). Знай словарь только одно из двух — половина
|
|
|
|
|
|
// номеров молча выпала бы, и выглядело бы это как «ДаДата не ответила».
|
|
|
|
|
|
['Мотив', 'motiv'],
|
|
|
|
|
|
['МОТИВ', 'motiv'],
|
|
|
|
|
|
['ООО "ЕКАТЕРИНБУРГ-2000"', 'motiv'],
|
|
|
|
|
|
['ООО «Екатеринбург-2000»', 'motiv'],
|
2026-07-23 11:52:28 +03:00
|
|
|
|
['', ''],
|
|
|
|
|
|
['Космическая связь', ''],
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
|
|
it('приводит имя оператора к каноническому ключу', function (string $raw, string $expected) {
|
|
|
|
|
|
expect((new OperatorNormalizer)->canonical($raw))->toBe($expected);
|
|
|
|
|
|
})->with('operators');
|