Rabbi_Gerzi/backend/tests/Fakes/FakeFilesystem.php

58 lines
1.2 KiB
PHP

<?php
namespace Tests\Fakes;
use App\Shared\Files\FileToUpload;
use App\Shared\Files\Filesystem;
class FakeFilesystem implements Filesystem
{
/**
* @var array<int, array{file: FileToUpload, folder: string}>
*/
public array $uploads = [];
/**
* @var string[]
*/
public array $deletedPaths = [];
/**
* @var string[]
*/
public array $readPaths = [];
/**
* @var array<string, string>
*/
private array $filesByPath = [];
public function upload(FileToUpload $file, string $folder): string
{
$this->uploads[] = ['file' => $file, 'folder' => $folder];
return $folder . '/fake-' . $file->getOriginalName();
}
public function url(string $path): string
{
return 'https://test.local/storage/' . $path;
}
public function delete(string $path): void
{
$this->deletedPaths[] = $path;
}
public function put(string $path, string $contents): void
{
$this->filesByPath[$path] = $contents;
}
public function read(string $path): ?string
{
$this->readPaths[] = $path;
return $this->filesByPath[$path] ?? null;
}
}