private function backupResource(RemoteResource $remoteResource, NotificationInterface $notification) { if ($remoteResource->getType() === RemoteResource::TYPE_DIRECTORY) { return $this->targetFilesystemAdapter->createDirectory($remoteResource); } $fileStream = $this->sourceFilesystemAdapter->readStream($remoteResource); if ($fileStream === false) { $notification->notifyErrorReadingResources($remoteResource); return false; } $writeResult = $this->targetFilesystemAdapter->writeStream($remoteResource, $fileStream); if ($writeResult === false) { $notification->notifyErrorWritingResources($remoteResource); return false; } return true; }
function it_creates_backup_containing_directory_and_files(SourceFilesystemAdapterInterface $sourceFilesystemAdapter, TargetFilesystemAdapterInterface $targetFilesystemAdapter, NotificationInterface $notification) { $resources = [new RemoteResource('test', RemoteResource::TYPE_DIRECTORY), new RemoteResource('test/2.jpg'), new RemoteResource('test/3.jpg')]; $sourceFilesystemAdapter->getResourcesList()->willReturn($resources); $targetFilesystemAdapter->createDirectory($resources[0])->willReturn([]); unset($resources[0]); foreach ($resources as $resource) { $sourceFilesystemAdapter->readStream($resource)->willReturn('resource'); $targetFilesystemAdapter->writeStream($resource, 'resource')->willReturn('resource'); } $this->run($notification); $notification->runProcess(3)->shouldBeCalled(); foreach ($resources as $resource) { $notification->notifySuccessStepProcess($resource)->shouldBeCalled(); } $notification->finishProcess()->shouldBeCalled(); }