Files
portal/app/tests/Unit/Autopodbor/RegionAreaCodeTest.php
T

32 lines
1.7 KiB
PHP
Raw Normal View History

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