public function testCreate()
 {
     $statement = $this->createDbalStatementMock();
     $statement->expects($this->once())->method('rowCount')->will($this->returnValue(1));
     $this->dbalMock->expects($this->once())->method('prepare')->with($this->anything())->will($this->returnValue($statement));
     $spiCreateStruct = new SPIBinaryFileCreateStruct();
     $spiCreateStruct->id = 'prefix/my/file.png';
     $spiCreateStruct->mimeType = 'image/png';
     $spiCreateStruct->size = 123;
     $spiCreateStruct->mtime = 1307155200;
     $this->assertInstanceOf('eZ\\Publish\\SPI\\IO\\BinaryFile', $this->handler->create($spiCreateStruct));
 }
 public function testCreate()
 {
     // good example of bad responsibilities... since create also loads, we test the same thing twice
     $spiCreateStruct = new SPIBinaryFileCreateStruct();
     $spiCreateStruct->id = 'prefix/my/file.png';
     $spiCreateStruct->size = 123;
     $spiCreateStruct->mtime = new DateTime('@1307155200');
     $expectedSpiBinaryFile = new SPIBinaryFile();
     $expectedSpiBinaryFile->id = 'prefix/my/file.png';
     $expectedSpiBinaryFile->size = 123;
     $expectedSpiBinaryFile->mtime = new DateTime('@1307155200');
     $this->filesystem->expects($this->once())->method('getMetadata')->with($spiCreateStruct->id)->will($this->returnValue(array('timestamp' => 1307155200, 'size' => 123)));
     $spiBinaryFile = $this->handler->create($spiCreateStruct);
     $this->assertInstanceOf('eZ\\Publish\\SPI\\IO\\BinaryFile', $spiBinaryFile);
     $this->assertEquals($expectedSpiBinaryFile, $spiBinaryFile);
 }
 public function createBinaryFile(BinaryFileCreateStruct $binaryFileCreateStruct)
 {
     if (empty($binaryFileCreateStruct->id) || !is_string($binaryFileCreateStruct->id)) {
         throw new InvalidArgumentValue('id', $binaryFileCreateStruct->id, 'BinaryFileCreateStruct');
     }
     if (!is_int($binaryFileCreateStruct->size) || $binaryFileCreateStruct->size < 0) {
         throw new InvalidArgumentValue('size', $binaryFileCreateStruct->size, 'BinaryFileCreateStruct');
     }
     if (!is_resource($binaryFileCreateStruct->inputStream)) {
         throw new InvalidArgumentValue('inputStream', 'property is not a file resource', 'BinaryFileCreateStruct');
     }
     if (!isset($binaryFileCreateStruct->mimeType)) {
         $buffer = fread($binaryFileCreateStruct->inputStream, $binaryFileCreateStruct->size);
         $binaryFileCreateStruct->mimeType = $this->mimeTypeDetector->getFromBuffer($buffer);
         unset($buffer);
     }
     $spiBinaryCreateStruct = $this->buildSPIBinaryFileCreateStructObject($binaryFileCreateStruct);
     try {
         $this->binarydataHandler->create($spiBinaryCreateStruct);
     } catch (Exception $e) {
         throw new IOException('An error occured creating binarydata', $e);
     }
     $spiBinaryFile = $this->metadataHandler->create($spiBinaryCreateStruct);
     if (!isset($spiBinaryFile->uri)) {
         $spiBinaryFile->uri = $this->binarydataHandler->getUri($spiBinaryFile->id);
     }
     return $this->buildDomainBinaryFileObject($spiBinaryFile);
 }