Files
portal/app/tests/Unit/Support/PhoneNormalizerTest.php
T

31 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
use App\Support\PhoneNormalizer;
it('normalizes russian phones to +7XXXXXXXXXX', function (string $input, ?string $expected) {
expect(PhoneNormalizer::normalize($input))->toBe($expected);
})->with([
['+7 (915) 123-45-67', '+79151234567'],
['8 915 123 45 67', '+79151234567'],
['9151234567', '+79151234567'],
['7(915)1234567', '+79151234567'],
['123', null],
['+1 202 555 0143', null], // 11 цифр, но начинается не с 7/8
['', null],
]);
it('чистит список контактных телефонов: нормализует к 79…, дубли схлопывает, неизвестное не теряет', function (array $input, array $expected) {
expect(PhoneNormalizer::cleanContactList($input))->toBe($expected);
})->with([
'десять цифр → 79' => [['9135191264'], ['79135191264']],
'одиннадцать с 8 → 79' => [['89135191264'], ['79135191264']],
'форматированный с +7 → 79' => [['+7 913 519-12-64'], ['79135191264']],
'три формы одного номера → один' => [['9135191264', '89135191264', '+7 913 519-12-64'], ['79135191264']],
'порядок первого вхождения сохраняется' => [['9135191264', '9991112233'], ['79135191264', '79991112233']],
'нераспознанное — оставляем как ввёл' => [['12345'], ['12345']],
'пустые строки отбрасываются' => [['', ' ', '9135191264'], ['79135191264']],
'нераспознанное дедуп по цифрам' => [['12345', '12345'], ['12345']],
]);