/** * @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); }