/** * @test */ public function get_job_status_on_failed_response() { $client = $this->prophesize(Auth::class); $userUpload = new UserUpload($client->reveal()); $uploadTicket = new UploadTicket(); $uploadTicket->setMemberId(123456); $uploadTicket->setJobId('a_job_id'); $fakeResponse = $this->getFakeResponse($this->getFailedResponse()); $client->request(Argument::any(), Argument::any())->willReturn($fakeResponse); $this->expectException(UploadException::class); $userUpload->getJobStatus($uploadTicket); }
/** * @param UploadTicket $uploadTicket * * @return UploadJobStatus * @throws UploadException */ public function getJobStatus(UploadTicket $uploadTicket) { $compiledUrl = $this->baseUrl . "?member_id={$uploadTicket->getMemberId()}&job_id={$uploadTicket->getJobId()}"; $response = $this->client->request('GET', $compiledUrl); $repositoryResponse = RepositoryResponse::fromResponse($response); if (!$repositoryResponse->isSuccessful()) { throw UploadException::failed($repositoryResponse); } if (!isset($repositoryResponse->getResponseAsArray()['response']['batch_segment_upload_job'][0])) { throw UploadException::missingIndex('response->batch_segment_upload_job->0'); } $uploadJobStatus = UploadJobStatus::fromArray($repositoryResponse->getResponseAsArray()['response']['batch_segment_upload_job'][0]); return $uploadJobStatus; }