populate() public method

Read exif data from incoming image
public populate ( Imbo\EventManager\EventInterface $event ) : array
$event Imbo\EventManager\EventInterface The triggered event
return array
Ejemplo n.º 1
0
 /**
  * @dataProvider getFilterData
  * @covers Imbo\EventListener\ExifMetadata::setImagick
  * @covers Imbo\EventListener\ExifMetadata::getImagick
  * @covers Imbo\EventListener\ExifMetadata::populate
  * @covers Imbo\EventListener\ExifMetadata::save
  * @covers Imbo\EventListener\ExifMetadata::filterProperties
  * @covers Imbo\EventListener\ExifMetadata::parseProperties
  */
 public function testCanFilterData($data, $tags, $expectedData)
 {
     $user = '******';
     $imageIdentifier = 'imageIdentifier';
     $blob = 'blob';
     $image = $this->getMock('Imbo\\Model\\Image');
     $image->expects($this->once())->method('getImageIdentifier')->will($this->returnValue($imageIdentifier));
     $image->expects($this->once())->method('getBlob')->will($this->returnValue($blob));
     $imagick = $this->getMock('Imagick');
     $imagick->expects($this->once())->method('readImageBlob')->will($this->returnValue($blob));
     $imagick->expects($this->once())->method('getImageProperties')->will($this->returnValue($data));
     $request = $this->getMock('Imbo\\Http\\Request\\Request');
     $request->expects($this->once())->method('getUser')->will($this->returnValue($user));
     $request->expects($this->any())->method('getImage')->will($this->returnValue($image));
     $database = $this->getMock('Imbo\\Database\\DatabaseInterface');
     $database->expects($this->once())->method('updateMetadata')->with($user, $imageIdentifier, $expectedData);
     $event = $this->getMock('Imbo\\EventManager\\Event');
     $event->expects($this->exactly(2))->method('getRequest')->will($this->returnValue($request));
     $event->expects($this->once())->method('getDatabase')->will($this->returnValue($database));
     $listener = new ExifMetadata(['allowedTags' => $tags]);
     $listener->setImagick($imagick);
     $listener->populate($event);
     $listener->save($event);
 }
Ejemplo n.º 2
0
 /**
  * @covers Imbo\EventListener\ExifMetadata::__construct
  * @covers Imbo\EventListener\ExifMetadata::populate
  * @covers Imbo\EventListener\ExifMetadata::save
  */
 public function testCanGetAndSaveProperties()
 {
     $listener = new ExifMetadata();
     $publicKey = 'foobar';
     $image = new Image();
     $image->setBlob(file_get_contents(FIXTURES_DIR . '/exif-logo.jpg'));
     $request = $this->getMock('Imbo\\Http\\Request\\Request');
     $request->expects($this->exactly(2))->method('getImage')->will($this->returnValue($image));
     $request->expects($this->once())->method('getPublicKey')->will($this->returnValue($publicKey));
     $database = $this->getMock('Imbo\\Database\\DatabaseInterface');
     $database->expects($this->once())->method('updateMetadata')->with($this->equalTo($publicKey), $this->equalTo('753e11e00522ff1e95600d8f91c74e8e'), $this->arrayHasKey('gps:location'));
     $event = $this->getMock('Imbo\\EventManager\\Event');
     $event->expects($this->exactly(2))->method('getRequest')->will($this->returnValue($request));
     $event->expects($this->once())->method('getDatabase')->will($this->returnValue($database));
     $properties = $listener->populate($event);
     $this->assertSame('SAMSUNG', $properties['exif:Make']);
     $this->assertSame('GT-I9100', $properties['exif:Model']);
     $listener->save($event);
 }
Ejemplo n.º 3
0
 /**
  * @dataProvider getFilterData
  * @covers Imbo\EventListener\ExifMetadata::setImagick
  * @covers Imbo\EventListener\ExifMetadata::getImagick
  * @covers Imbo\EventListener\ExifMetadata::populate
  * @covers Imbo\EventListener\ExifMetadata::save
  * @covers Imbo\EventListener\ExifMetadata::filterProperties
  * @covers Imbo\EventListener\ExifMetadata::parseProperties
  */
 public function testCanFilterData($data, $tags, $expectedData)
 {
     $publicKey = 'publickey';
     $checksum = 'checksum';
     $blob = 'blob';
     $image = $this->getMock('Imbo\\Model\\Image');
     $image->expects($this->once())->method('getChecksum')->will($this->returnValue($checksum));
     $image->expects($this->once())->method('getBlob')->will($this->returnValue($blob));
     $imagick = $this->getMock('Imagick');
     $imagick->expects($this->once())->method('readImageBlob')->will($this->returnValue($blob));
     $imagick->expects($this->once())->method('getImageProperties')->will($this->returnValue($data));
     $request = $this->getMock('Imbo\\Http\\Request\\Request');
     $request->expects($this->once())->method('getPublicKey')->will($this->returnValue($publicKey));
     $request->expects($this->exactly(2))->method('getImage')->will($this->returnValue($image));
     $database = $this->getMock('Imbo\\Database\\DatabaseInterface');
     $database->expects($this->once())->method('updateMetadata')->with($publicKey, $checksum, $expectedData);
     $event = $this->getMock('Imbo\\EventManager\\Event');
     $event->expects($this->exactly(2))->method('getRequest')->will($this->returnValue($request));
     $event->expects($this->once())->method('getDatabase')->will($this->returnValue($database));
     $listener = new ExifMetadata(array('allowedTags' => $tags));
     $listener->setImagick($imagick);
     $listener->populate($event);
     $listener->save($event);
 }