function it_downloads_an_album(Grab $grab, Filesystem $filesystem, RemoteResourceClient $remoteResourceClient, EventDispatcherInterface $eventDispatcher)
 {
     $grab->getImageUrls()->willReturn(['http://fb.me/photo/1.jpg', 'http://fb.me/photo/2.jpg']);
     $grab->getSavePath()->willReturn('/tmp');
     $filesystem->exists('/tmp')->willReturn(false);
     $filesystem->mkdir('/tmp')->shouldBeCalled();
     $remoteResourceClient->getResource('http://fb.me/photo/1.jpg')->willReturn('IMAGEBLOB_1');
     $remoteResourceClient->getResource('http://fb.me/photo/2.jpg')->willReturn('IMAGEBLOB_2');
     $filesystem->dumpFile('/tmp/1.jpg', 'IMAGEBLOB_1')->shouldBeCalled();
     $filesystem->dumpFile('/tmp/2.jpg', 'IMAGEBLOB_2')->shouldBeCalled();
     $eventDispatcher->dispatch('albumgrab.download_and_save', new DownloadAndSaveEvent('/tmp/1.jpg'))->shouldBeCalled();
     $eventDispatcher->dispatch('albumgrab.download_and_save', new DownloadAndSaveEvent('/tmp/2.jpg'))->shouldBeCalled();
     $this->download($grab);
 }
 /**
  * @param Grab $grab
  *
  * @throws IOExceptionInterface if the save directory cannot be created.
  */
 private function prepareDirectory(Grab $grab)
 {
     if (!$this->filesystem->exists($grab->getSavePath())) {
         $this->filesystem->mkdir($grab->getSavePath());
     }
 }