public function testInsertJobUpload() { $actualRequest = null; $config = ['configuration' => ['load' => ['destinationTable' => ['tableId' => 'myTableId', 'datasetId' => 'myDatasetId', 'projectId' => 'myProjectId']]]]; $options = ['data' => 'justSomeData', 'projectId' => 'myProjectId'] + $config; $response = new Response(200, [], json_encode(['jobReference' => ['jobId' => 'myJobId']])); $this->requestWrapper->send(Argument::type('Psr\\Http\\Message\\RequestInterface'), Argument::type('array'))->will(function ($args) use(&$actualRequest, $response) { $request = $args[0]; if ($request->getMethod() === 'POST') { $actualRequest = $request; } return $response; })->shouldBeCalledTimes(1); $rest = new Rest(); $rest->setRequestWrapper($this->requestWrapper->reveal()); $uploader = $rest->insertJobUpload($options); $uploader->upload(); $metadata = $this->getMetadata($actualRequest); $this->assertEquals($config, $metadata); $this->assertInstanceOf(AbstractUploader::class, $uploader); }