StorageTest.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace Illuminate\Tests\Integration\Filesystem;
  3. use Illuminate\Support\Facades\File;
  4. use Illuminate\Support\Facades\Storage;
  5. use Orchestra\Testbench\TestCase;
  6. use Symfony\Component\Process\Process;
  7. /**
  8. * @requires OS Linux|Darwin
  9. */
  10. class StorageTest extends TestCase
  11. {
  12. protected $stubFile;
  13. protected function setUp(): void
  14. {
  15. $this->afterApplicationCreated(function () {
  16. File::put($file = storage_path('app/public/StardewTaylor.png'), File::get(__DIR__.'/Fixtures/StardewTaylor.png'));
  17. $this->stubFile = $file;
  18. });
  19. $this->beforeApplicationDestroyed(function () {
  20. if (File::exists($this->stubFile)) {
  21. File::delete($this->stubFile);
  22. }
  23. });
  24. parent::setUp();
  25. }
  26. public function testItCanDeleteViaStorage()
  27. {
  28. Storage::disk('public')->assertExists('StardewTaylor.png');
  29. $this->assertTrue(Storage::disk('public')->exists('StardewTaylor.png'));
  30. Storage::disk('public')->delete('StardewTaylor.png');
  31. Storage::disk('public')->assertMissing('StardewTaylor.png');
  32. $this->assertFalse(Storage::disk('public')->exists('StardewTaylor.png'));
  33. }
  34. public function testItCanDeleteViaFilesystemShouldUpdatesStorage()
  35. {
  36. Storage::disk('public')->assertExists('StardewTaylor.png');
  37. $this->assertTrue(Storage::disk('public')->exists('StardewTaylor.png'));
  38. File::delete($this->stubFile);
  39. Storage::disk('public')->assertMissing('StardewTaylor.png');
  40. $this->assertFalse(Storage::disk('public')->exists('StardewTaylor.png'));
  41. }
  42. public function testItCanDeleteViaFilesystemRequiresManualClearStatCacheOnStorageFromDifferentProcess()
  43. {
  44. Storage::disk('public')->assertExists('StardewTaylor.png');
  45. $this->assertTrue(Storage::disk('public')->exists('StardewTaylor.png'));
  46. Process::fromShellCommandline("rm {$this->stubFile}")->run();
  47. clearstatcache(true, $this->stubFile);
  48. Storage::disk('public')->assertMissing('StardewTaylor.png');
  49. $this->assertFalse(Storage::disk('public')->exists('StardewTaylor.png'));
  50. }
  51. }