Save metadata to database
public save ( Imbo\EventManager\EventInterface $event ) | ||
$event | Imbo\EventManager\EventInterface | The triggered event |
/** * @covers Imbo\EventListener\ExifMetadata::save * @expectedException Imbo\Exception\RuntimeException * @expectedExceptionMessage Could not store EXIF-metadata * @expectedExceptionCode 500 */ public function testWillDeleteImageWhenUpdatingMetadataFails() { $databaseException = $this->getMock('Imbo\\Exception\\DatabaseException'); $database = $this->getMock('Imbo\\Database\\DatabaseInterface'); $database->expects($this->once())->method('updateMetadata')->with('user', 'imageidentifier', [])->will($this->throwException($databaseException)); $database->expects($this->once())->method('deleteImage')->with('user', 'imageidentifier'); $image = $this->getMock('Imbo\\Model\\Image'); $image->expects($this->once())->method('getImageIdentifier')->will($this->returnValue('imageidentifier')); $request = $this->getMock('Imbo\\Http\\Request\\Request'); $request->expects($this->once())->method('getUser')->will($this->returnValue('user')); $request->expects($this->once())->method('getImage')->will($this->returnValue($image)); $event = $this->getMock('Imbo\\EventManager\\Event'); $event->expects($this->once())->method('getRequest')->will($this->returnValue($request)); $event->expects($this->once())->method('getDatabase')->will($this->returnValue($database)); $this->listener->save($event); }
/** * @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); }