/**
  * @param NewImageEvent $event
  */
 private function transferImageFiles(NewImageEvent $event)
 {
     $preProcessed = $this->imagePreProcessor->preProcess($event->image());
     /** @var ImagickContract $imagick */
     foreach ($preProcessed as $imagick) {
         $this->publicFilesystem->getDriver()->put("image/{$imagick->getFilename()}", $imagick->getImageBlob(), self::fileConfig());
     }
 }
 /**
  * Should be able to pre-process an image resource into an imagick
  * container.
  */
 public function testPreProcess()
 {
     /** @var Image|MockObject $image */
     $image = $this->makeMock(Image::class);
     /** @var ImageTransformer|MockObject $transformer */
     $transformer = $this->makeMock(ImageTransformer::class);
     $transformer->expects($this->atLeastOnce())->method('applyTo');
     $this->imagePreProcessor->addTransformer($transformer);
     $collection = $this->imagePreProcessor->preProcess($image);
     $this->assertInstanceOf(ImagickCollection::class, $collection);
 }
 /**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     $this->app->bind(ImagickContract::class, function () {
         return new ImagickAdapter(new Imagick());
     });
     $this->app->bind(ImagePreProcessor::class, function (Application $app) {
         $processor = new ImagePreProcessor($app->make(ImagickContract::class));
         foreach ($this->transformerClasses as $transformerClass) {
             $processor->addTransformer($app->make($transformerClass));
         }
         return $processor;
     });
 }
 /**
  * Should pre-process and transfer an image.
  */
 public function testHandle()
 {
     $filename = '/tmp/' . uniqid();
     file_put_contents($filename, '');
     $this->image->expects($this->atLeastOnce())->method('storageLocation')->willReturn($filename);
     $preProcessed = $this->makeMock(ImagickContract::class);
     $this->imagePreProcessor->expects($this->atLeastOnce())->method('preProcess')->with($this->image)->willReturn(new ImagickCollection([$preProcessed]));
     $this->config->expects($this->atLeastOnce())->method('get')->willReturn('foobar_endpoint');
     $fileContent = 'foo bar';
     $preProcessed->expects($this->atLeastOnce())->method('getImageBlob')->willReturn($fileContent);
     $this->filesystem->expects($this->atLeastOnce())->method('put')->with($this->isType('string'), $fileContent, $this->isType('array'));
     $this->newImageListener->handle($this->event);
 }