This event listener is responsible for reading the initial image data, and updating the model
before sending back transformed images to the client, or when storing transformed images in the
storage.
/** * Update the model data if the image has been changed * * @param EventInterface $event The event instance */ public function updateModel(EventInterface $event) { $image = $event->getArgument('image'); if ($image->hasBeenTransformed()) { $image->setBlob($this->imagick->getImageBlob()); } }
/** * @covers Imbo\EventListener\Imagick::readImageBlob * @covers Imbo\EventListener\Imagick::setImagick * @dataProvider hasImageBeenTransformed */ public function testUpdatesModelBeforeSendingResponse($hasBeenTransformed) { $image = $this->getMock('Imbo\\Model\\Image'); $image->expects($this->once())->method('hasBeenTransformed')->will($this->returnValue($hasBeenTransformed)); $imagick = $this->getMock('Imagick'); if ($hasBeenTransformed) { $imagick->expects($this->once())->method('getImageBlob')->will($this->returnValue('image')); $image->expects($this->once())->method('setBlob')->with('image'); } else { $imagick->expects($this->never())->method('getImageBlob'); $image->expects($this->never())->method('setBlob'); } $this->event->expects($this->once())->method('getArgument')->with('image')->will($this->returnValue($image)); $this->listener->setImagick($imagick)->updateModel($this->event); }