create(); $user->refresh(); // Valid user's import tree, including a nested subfolder. Storage::disk('local')->put('imports/'.$user->id.'/photo.jpg', 'x'); Storage::disk('local')->put('imports/'.$user->id.'/media/nested.jpg', 'y'); $this->artisan('app:import-upload-clean-storage')->assertExitCode(0); expect(Storage::disk('local')->exists('imports/'.$user->id.'/photo.jpg'))->toBeTrue(); expect(Storage::disk('local')->exists('imports/'.$user->id.'/media/nested.jpg'))->toBeTrue(); }); it('deletes an import dir for a non-existent user', function () { $orphanId = 999999; Storage::disk('local')->put('imports/'.$orphanId.'/photo.jpg', 'x'); $this->artisan('app:import-upload-clean-storage')->assertExitCode(0); expect(Storage::disk('local')->exists('imports/'.$orphanId.'/photo.jpg'))->toBeFalse(); }); it('deletes an import dir for a suspended user', function () { $user = User::factory()->create(); $user->refresh(); $user->status = 'delete'; $user->save(); Storage::disk('local')->put('imports/'.$user->id.'/photo.jpg', 'x'); $this->artisan('app:import-upload-clean-storage')->assertExitCode(0); // whereNull('status') excludes the suspended user, so the dir is removed. expect(Storage::disk('local')->exists('imports/'.$user->id.'/photo.jpg'))->toBeFalse(); });