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