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']], ]);