Files
portal/app/tests/Feature/Supplier/SupplierPortalClientReportTest.php
T

47 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
use App\Services\Supplier\SupplierPortalClient;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Http;
beforeEach(function (): void {
config(['services.supplier.portal_url' => 'https://crm.bp-gr.ru']);
Cache::store('redis')->put('supplier:session', ['phpsessid' => 'test', 'csrf' => 'test'], now()->addHour());
});
it('requestNumbersReport posts a generation request and returns report id', function (): void {
Http::fake([
'crm.bp-gr.ru/admin/report/generate*' => Http::response(['id' => 508346], 200),
]);
$client = app(SupplierPortalClient::class);
$id = $client->requestNumbersReport(Carbon::parse('2026-05-17'), Carbon::parse('2026-05-18'));
expect($id)->toBe(508346);
});
it('waitReportReady polls until status is processed', function (): void {
Http::fakeSequence('crm.bp-gr.ru/admin/report/status*')
->push(['status' => 'building'], 200)
->push(['status' => 'processed'], 200);
$client = app(SupplierPortalClient::class);
$client->waitReportReady(508346);
expect(true)->toBeTrue(); // не бросил исключение — отчёт дождался
});
it('downloadReport returns raw CSV body', function (): void {
Http::fake([
'crm.bp-gr.ru/admin/report/getfile*' => Http::response("Name;Tag;Phone\nB1_a.com;t;79991234567\n", 200),
]);
$client = app(SupplierPortalClient::class);
$csv = $client->downloadReport(508346);
expect($csv)->toContain('Name;Tag;Phone');
});