function it_notify_responders_when_archive_is_not_found(ArchiveRepository $archiveRepository, UploadArchiveResponder $responder)
 {
     $archiveRepository->findByName('myArchiveName')->willReturn(null);
     $this->addResponder($responder);
     $responder->archiveNotFound('myArchiveName')->shouldBeCalled();
     $this->execute(new UploadArchiveRequest('myArchiveName', ['myProvider1']));
 }
 function it_notify_responders_when_archive_is_created(CreateArchiveResponder $responder, ArchiveRepository $archiveRepository, Archive $archive)
 {
     $this->addResponder($responder);
     $createArchiveRequest = new CreateArchiveRequest('dummy', 'name', 'path');
     $archiveRepository->add($archive)->willReturn();
     $responder->archiveCreated('name')->shouldBeCalled();
     $responder->archiveAlreadyExists('name')->shouldNotBeCalled();
     $this->execute($createArchiveRequest);
 }
 function it_passes_listed_archives_to_responder(ArchiveListResponder $archiveListResponder, ArchiveRepository $archiveRepository, Archive $archive, Archive $uploadedArchive)
 {
     $archive->getName()->willReturn('first');
     $archive->isUploaded()->willReturn(false);
     $uploadedArchive->getName()->willReturn('second');
     $uploadedArchive->isUploaded()->willReturn(true);
     $this->addResponder($archiveListResponder);
     $archiveRepository->findAll()->willReturn([$archive, $uploadedArchive])->shouldBeCalled();
     $archiveListResponder->archiveListFechted(Argument::that(function ($response) {
         return $response->items[0]->archiveName == 'first' && $response->items[0]->uploaded == false && $response->items[1]->archiveName == 'second' && $response->items[1]->uploaded == true;
     }))->shouldBeCalled();
     $this->execute();
 }
 public function execute(CreateArchiveRequest $request)
 {
     $fileSource = $this->fileSourceRegistry->get($request->fileSource);
     $files = $fileSource->getFiles($request->path);
     $archiveFiles = [];
     foreach ($files as $file) {
         $archiveFiles[] = new ArchiveFile($file->path);
     }
     $archive = $this->archiveFactory->create($request->archiveName, $archiveFiles);
     if ($this->archiveRepository->findByName($request->archiveName)) {
         $this->archiveAlreadyExists($archive);
         return;
     }
     $this->archiveRepository->add($archive);
     $this->archiveCreated($archive);
 }
 public function execute(UploadArchiveRequest $request)
 {
     $archive = $this->archiveRepository->findByName($request->archiveName);
     if (!$archive) {
         $this->archiveNotFound($request->archiveName);
         return;
     }
     $archiveFilePaths = array_map(function (ArchiveFile $archiveFile) {
         return $archiveFile->getPath();
     }, $archive->getFiles());
     $providers = [];
     foreach ($request->providersNames as $providerName) {
         $provider = $this->uploadProviderRegistry->get($providerName);
         $provider->upload($request->archiveName, $archiveFilePaths);
         $providers[] = $provider;
     }
     $archive->upload();
     $uploadedArchive = $this->uploadedArchiveFactory->create($archive, $providers);
     $this->uploadedArchiveRepository->add($uploadedArchive);
     $this->archiveRepository->add($archive);
     $this->archiveUploaded($request->archiveName);
 }
 public function execute()
 {
     $archives = $this->archiveRepository->findAll();
     $archivesItems = $this->fetchArchiveItems($archives);
     $this->archiveListFetched($archivesItems);
 }