efdb3ee2c3
Если на сайте конкурента короткий локальный номер без кода города И на странице нет ни одного полного номера, движок берёт код по региону конкурента. Основной путь прежний — код со страницы; региональный код лишь запасной. - RegionAreaCode: субъект РФ → телефонный код адм. центра, только уверенные 3-значные коды миллионников, ключ по имени из RussianRegions, неизвестный → null - RealCompetitorAgent резолвит regionCode и пробрасывает в CandidateBuilder→HtmlPhoneScanner - ограничение задокументировано: код центра, не выдумываем при отсутствии в карте - тесты карты и сквозной достройки; бэкенд автоподбора 130/130 НЕ на проде, воркстри avtopodbor. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
32 lines
1.7 KiB
PHP
32 lines
1.7 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Support\RegionAreaCode;
|
|
use App\Support\RussianRegions;
|
|
|
|
/** Код субъекта по каноничному имени — чтобы тест не зависел от номера строки в справочнике. */
|
|
function subjectCode(string $name): int
|
|
{
|
|
return RussianRegions::nameToCode()[$name];
|
|
}
|
|
|
|
it('отдаёт телефонный код столицы по коду субъекта', function () {
|
|
expect(RegionAreaCode::forSubject(subjectCode('Красноярский край')))->toBe('391');
|
|
expect(RegionAreaCode::forSubject(subjectCode('Новосибирская область')))->toBe('383');
|
|
expect(RegionAreaCode::forSubject(subjectCode('Свердловская область')))->toBe('343');
|
|
expect(RegionAreaCode::forSubject(subjectCode('Республика Татарстан')))->toBe('843');
|
|
expect(RegionAreaCode::forSubject(subjectCode('Москва')))->toBe('495');
|
|
expect(RegionAreaCode::forSubject(subjectCode('Санкт-Петербург')))->toBe('812');
|
|
});
|
|
|
|
it('возвращает null для региона без уверенного кода (не выдумываем)', function () {
|
|
// Еврейская АО в карту намеренно не внесена — код столицы длинный/неоднозначный.
|
|
expect(RegionAreaCode::forSubject(subjectCode('Еврейская автономная область')))->toBeNull();
|
|
});
|
|
|
|
it('возвращает null для неизвестного/нулевого кода', function () {
|
|
expect(RegionAreaCode::forSubject(0))->toBeNull();
|
|
expect(RegionAreaCode::forSubject(999))->toBeNull();
|
|
});
|