Files
portal/app/tests/Unit/Sms/OperatorNormalizerTest.php
T
Дмитрий a159bf73cb feat,смс: портал научился сети Мотива — маршрут через Билайна на выключателе
Номер абонента Мотива не доходил даже до каналов: словарь операторов о Мотиве
не знал, и номер выбывал на первой заставе «кому мы вообще шлём».

Что сделано:
· словарь знает ОБА сырых написания — торговое «Мотив» от ДаДаты и юридическое
  ООО "ЕКАТЕРИНБУРГ-2000" из реестра Россвязи, где слова «Мотив» нет ни разу
  замер по DEF-9xx.csv: 29 диапазонов, среди 89 имён реестра столкновений нет;
· Мотив добавлен к четвёрке владельца — сетей стало пять;
· маршрут через Билайна стоит на выключателе SMS_BEELINE_SERVES_MOTIV,
  умолчание ВЫКЛЮЧЕНО: до одобрения имени отправка вернёт 20230, а этот отказ
  окончательный — повтора нет, сообщение умрёт;
· цена по сети, а не одна на канал: 770 копеек за Мотива. Экран сверки тоже
  научен считать по сети — иначе занижал бы расход на 1,84 ₽ с сообщения;
· проверка ввода настроек и галки в админке пропускают Мотива: без этого
  владелец не смог бы его отметить, а заполненный список отменяет код;
· на клиентском экране «Имя отправителя» появилась пятая строка — скрыть её
  значило бы солгать умолчанием.

Тесты: модуль 548/548, было 530; 1801 проверка. Фронтенд 120/120, Sales 483/483.
Контрольные прогоны: убранное юридическое написание красит ровно четыре
зависящих от него теста, перевёрнутое умолчание выключателя — ровно один.

Не выкачено. Включать после того, как Билайн согласует имя — ориентир 24.08.2026.
2026-08-10 20:27:55 +03:00

35 lines
1.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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');