Files
portal/app/tests/Feature/Imitation/FakeDaDataPhoneClientTest.php
T
2026-06-03 15:35:46 +03:00

38 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
use App\Services\DaData\DaDataException;
use App\Services\DaData\DaDataPhoneClient;
use Tests\Support\Imitation\FakeDaDataPhoneClient;
use Illuminate\Foundation\Testing\DatabaseTransactions;
uses(DatabaseTransactions::class);
/**
* Direct tests for FakeDaDataPhoneClient (TDD gate heuristic).
* Integration tests are in FakeDaDataClientTest.php.
* Task 1 — Phase 1 Portal Client Imitation Harness.
*/
it('fake phone client is subtype of DaDataPhoneClient', function (): void {
expect(new FakeDaDataPhoneClient())->toBeInstanceOf(DaDataPhoneClient::class);
})->group('imitation');
it('stub method returns self for fluent chaining', function (): void {
$fake = new FakeDaDataPhoneClient();
$result = $fake->stub('79990000001', qc: 0, region: 'Москва', provider: 'МТС');
expect($result)->toBeInstanceOf(FakeDaDataPhoneClient::class);
})->group('imitation');
it('cleanPhone throws DaDataException when no stub registered', function (): void {
$fake = new FakeDaDataPhoneClient();
expect(fn () => $fake->cleanPhone('79990000099'))->toThrow(DaDataException::class);
})->group('imitation');
it('stubThrows registers exception for cleanPhone', function (): void {
$fake = new FakeDaDataPhoneClient();
$fake->stubThrows('79990000002');
expect(fn () => $fake->cleanPhone('79990000002'))->toThrow(DaDataException::class);
})->group('imitation');