url = $url; $this->headers = $headers; return [ 'status' => 200, 'json' => [ 'value' => [ 'globalStatus' => 'OK', 'requests' => [['requestId' => 123]], ], ], ]; } }; $client = new ElixFormsApiClient('https://example.test', $httpClient); $response = $client->lookupByStatus('MODULO TEST', 'token', 'user'); self::assertSame('success', $response['status']); self::assertSame([['requestId' => 123]], $response['data']); self::assertStringNotContainsString('requestStatus=', $httpClient->url); self::assertStringContainsString('moduleTag=MODULO%20TEST', $httpClient->url); self::assertSame('Bearer token', $httpClient->headers['Authorization']); self::assertSame('user', $httpClient->headers['x-api-username']); } public function testLookupByStatusExpandsCommaSeparatedStatuses(): void { $httpClient = new class extends HttpClient { public string $url = ''; public function get(string $url, array $headers = []) { $this->url = $url; return [ 'status' => 200, 'json' => [ 'value' => [ 'globalStatus' => 'OK', 'requests' => [], ], ], ]; } }; $client = new ElixFormsApiClient('https://example.test', $httpClient); $client->lookupByStatus( 'MODULO', 'token', 'user', 'IN_PROGRESS, PROCESSED' ); self::assertStringContainsString('requestStatus=IN_PROGRESS', $httpClient->url); self::assertStringNotContainsString('requestStatus=SUBMITTED', $httpClient->url); self::assertStringContainsString('requestStatus=PROCESSED', $httpClient->url); } public function testLookupByStatusOmitsStatusesWhenTheValueIsEmpty(): void { $httpClient = new class extends HttpClient { public string $url = ''; public function get(string $url, array $headers = []) { $this->url = $url; return [ 'status' => 200, 'json' => ['value' => ['globalStatus' => 'OK', 'requests' => []]], ]; } }; $client = new ElixFormsApiClient('https://example.test', $httpClient); $client->lookupByStatus('MODULO', 'token', 'user', ' '); self::assertStringNotContainsString('requestStatus=', $httpClient->url); } public function testLookupByStatusReturnsFailForAnUnknownStatus(): void { $httpClient = new HttpClient(); $client = new ElixFormsApiClient('https://example.test', $httpClient); $response = $client->lookupByStatus('MODULO', 'token', 'user', 'UNKNOWN'); self::assertSame([ 'status' => 'fail', 'data' => ['requestStatuses' => 'Lo stato elixForms richiesto non รจ valido.'], ], $response); } public function testGetExportTagsSupportsVendorJsonContentTypeResponses(): void { $httpClient = new class extends HttpClient { public string $url = ''; public function get(string $url, array $headers = []) { $this->url = $url; return [ 'status' => 200, 'body' => json_encode([ 'value' => [ 'globalStatus' => 'OK', 'exportTags' => [ ['name' => 'contratto.id', 'value' => 'ABC-123'], ], ], ]), 'json' => null, ]; } }; $client = new ElixFormsApiClient('https://example.test/', $httpClient); $response = $client->getExportTags(42, 'MODULO', 'token', 'user'); self::assertSame('success', $response['status']); self::assertSame( [['name' => 'contratto.id', 'value' => 'ABC-123']], $response['data'] ); self::assertSame( 'https://example.test/services/api/request/42/view/_DEFAULT/exportTags/get/v1?moduleTag=MODULO&exportGroup=API', $httpClient->url ); } public function testGetExportTagsUsesTheProvidedExportGroup(): void { $httpClient = new class extends HttpClient { public string $url = ''; public function get(string $url, array $headers = []) { $this->url = $url; return [ 'status' => 200, 'json' => [ 'value' => [ 'globalStatus' => 'OK', 'exportTags' => [], ], ], ]; } }; $client = new ElixFormsApiClient('https://example.test', $httpClient); $client->getExportTags(42, 'MODULO', 'token', 'user', 'REPORT ORE'); self::assertStringContainsString('exportGroup=REPORT%20ORE', $httpClient->url); } public function testGetExportTagsReturnsFailForAnEmptyExportGroup(): void { $httpClient = new HttpClient(); $client = new ElixFormsApiClient('https://example.test', $httpClient); $response = $client->getExportTags(42, 'MODULO', 'token', 'user', ' '); self::assertSame([ 'status' => 'fail', 'data' => ['exportGroup' => 'deve essere una stringa non vuota.'], ], $response); } public function testLookupByStatusReturnsErrorForAnUnsuccessfulHttpResponse(): void { $httpClient = new class extends HttpClient { public function get(string $url, array $headers = []) { return ['status' => 503]; } }; $client = new ElixFormsApiClient('https://example.test', $httpClient); $response = $client->lookupByStatus('MODULO', 'token', 'user'); self::assertSame([ 'status' => 'error', 'message' => 'Errore durante LookupByStatus.', 'code' => 503, ], $response); } }