/**
  * {@inheritdoc}
  */
 public function discoverPrinters()
 {
     $response = $this->postRequest('search');
     $printers = [];
     foreach ($response['printers'] as $metadata) {
         $printer = new Printer();
         $printer->setVendorId($metadata['id'])->setName($metadata['displayName'])->setDescription($metadata['description'])->setMetadata($metadata);
         $printers[] = $printer;
     }
     return $printers;
 }
 public function testSubmitJob()
 {
     $googleClient = $this->getMock('Google_Client');
     $service = $this->getMock('PrintService\\Service\\GoogleCloudPrintService', ['postRequest'], [$googleClient]);
     $service->expects($this->once())->method('postRequest')->will($this->returnValue($this->printJobData));
     $printer = new Printer();
     $printer->setVendorId('9c11268c-4dd8-c8f4-e63e-3a5f26f0fc8f');
     $exampleFile = realpath(__DIR__ . '/../fixtures/example.pdf');
     $file = new File();
     $file->setLocalPath($exampleFile);
     $rp = new \ReflectionProperty($file, 'id');
     $rp->setAccessible(true);
     $rp->setValue($file, 853);
     $rp->setAccessible(false);
     $job = $service->submitPrintJob($printer, $file);
     $this->assertSame('4f616ca1-6979-e090-e3a3-705ec5db4d21', $job->getJobId());
     $this->assertSame('file-853', $job->getTitle());
     $this->assertSame($printer, $job->getPrinter());
     $this->assertSame($file, $job->getFile());
     $this->assertSame('QUEUED', $job->getStatus());
     $this->assertEquals(new \DateTime('2014-04-08 03:58:13'), $job->getSentAt());
     $this->assertSame($this->printJobData['job'], $job->getMetadata());
 }