Files
portal/app/tests/Unit/ClientSms/BaseExampleWriterTest.php
T

32 lines
1.3 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
use App\Services\ClientSms\ClientSmsBaseExampleWriter;
use App\Services\ClientSms\ClientSmsPhoneFileReader;
use App\Support\PhoneNormalizer;
/**
* «Скачать пример файла» — чтобы клиент заполнил свою базу правильно. Пример —
* валидный .xlsx с заголовком «Телефон» и парой образцов номеров, который наш же
* парсер читает без потерь.
*/
it('строит валидный xlsx с примерами номеров', function () {
$bytes = (new ClientSmsBaseExampleWriter)->build();
// .xlsx = ZIP → сигнатура «PK». PDF был бы «%PDF».
expect(substr($bytes, 0, 2))->toBe('PK');
// читаем свой же пример своим парсером: заголовок отсеётся, номера останутся
$path = tempnam(sys_get_temp_dir(), 'ex').'.xlsx';
file_put_contents($path, $bytes);
$rows = (new ClientSmsPhoneFileReader)->read($path);
@unlink($path);
expect($rows)->not->toBeEmpty();
// образцы — валидные российские номера
foreach ($rows as $r) {
expect(PhoneNormalizer::normalize($r))->not->toBeNull();
}
});