From 3a90cca86369f85d7ce1f2c3d8537e3772c34f12 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Fri, 4 Aug 2017 22:40:24 +0800 Subject: [PATCH] Testing with fake storage and fake file --- app/Http/Controllers/Projects/FilesController.php | 7 ++++++- resources/views/projects/files.blade.php | 2 +- storage/framework/testing/.gitignore | 2 ++ tests/Feature/Projects/UploadFilesTest.php | 21 +++++++++++++++------ 4 files changed, 24 insertions(+), 8 deletions(-) create mode 100755 storage/framework/testing/.gitignore diff --git a/app/Http/Controllers/Projects/FilesController.php b/app/Http/Controllers/Projects/FilesController.php index 53c6d4b..2f4e1cf 100644 --- a/app/Http/Controllers/Projects/FilesController.php +++ b/app/Http/Controllers/Projects/FilesController.php @@ -33,6 +33,7 @@ class FilesController extends Controller public function create(Request $request, $fileableId) { $this->validate($request, [ + 'fileable_type' => 'required', 'file' => 'required|file|max:10000', 'title' => 'required|max:60', 'description' => 'nullable|max:255', @@ -96,7 +97,11 @@ class FilesController extends Controller $fileData['description'] = $data['description']; \DB::beginTransaction(); // dd(is_dir(storage_path('app/public/files'))); - $file->storeAs('public/files', $fileName); + if (env('APP_ENV') == 'testing') { + $file->store('public/files', 'avatar'); + } else { + $file->store('public/files'); + } // $file->move(storage_path('app/public/files')); $file = File::create($fileData); \DB::commit(); diff --git a/resources/views/projects/files.blade.php b/resources/views/projects/files.blade.php index 01b841c..f10949f 100755 --- a/resources/views/projects/files.blade.php +++ b/resources/views/projects/files.blade.php @@ -46,7 +46,7 @@ @empty - {{ trans('file.empty') }} + {{ trans('file.empty') }} @endforelse diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore new file mode 100755 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/testing/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/Feature/Projects/UploadFilesTest.php b/tests/Feature/Projects/UploadFilesTest.php index bc159b5..9ce234e 100644 --- a/tests/Feature/Projects/UploadFilesTest.php +++ b/tests/Feature/Projects/UploadFilesTest.php @@ -2,7 +2,11 @@ namespace Tests\Feature\Projects; +use App\Entities\Projects\File; use App\Entities\Projects\Project; +use Illuminate\Http\Testing\FileFactory; +use Illuminate\Http\UploadedFile; +use Storage; use Tests\TestCase; class UploadFilesTest extends TestCase @@ -10,6 +14,7 @@ class UploadFilesTest extends TestCase /** @test */ public function user_can_upload_document_to_a_project() { + Storage::fake('avatar'); $user = $this->adminUserSigningIn(); $project = factory(Project::class)->create(['owner_id' => $user->id]); $this->visit(route('projects.files', $project->id)); @@ -17,7 +22,7 @@ class UploadFilesTest extends TestCase $this->seeElement('input', ['id' => 'file']); $this->seeElement('input', ['type' => 'submit', 'value' => trans('file.upload')]); - $this->attach(storage_path('app/guitar-640.jpg'), 'file'); + $this->attach(UploadedFile::fake()->create('avatar.txt'), 'file'); $this->type('Judul file', 'title'); $this->type('Deskripsi file yang diuplod.', 'description'); $this->press(trans('file.upload')); @@ -32,18 +37,23 @@ class UploadFilesTest extends TestCase ]); $file = $project->files->first(); - $filePath = storage_path('app/public/files/' . $file->filename); - $this->assertFileExistsThenDelete($filePath, 'File doesn\'t exists.'); + Storage::disk('avatar')->assertExists('public/files/' . $file->filename); } /** @test */ public function user_can_edit_document_file_on_a_project() { + Storage::fake('avatar'); $user = $this->adminUserSigningIn(); $project = factory(Project::class)->create(['owner_id' => $user->id]); + // $file = factory(File::class, 'project')->create(['fileable_id' => $project->id]); + // dd(get_class_methods((new FileFactory)->create('123.txt'))); + // $result = Storage::disk('avatar')->put('public/files', (new FileFactory)->create('123.txt')); + // dd($result); + $this->visit(route('projects.files', [$project->id])); - $this->attach(storage_path('app/guitar-640.jpg'), 'file'); + $this->attach(UploadedFile::fake()->image('avatar.jpg'), 'file'); $this->type('Judul file', 'title'); $this->type('Deskripsi file yang diuplod.', 'description'); $this->press(trans('file.upload')); @@ -68,7 +78,6 @@ class UploadFilesTest extends TestCase 'description' => 'Edit Deskripsi file yang diuplod.', ]); - $filePath = storage_path('app/public/files/' . $file->filename); - $this->assertFileExistsThenDelete($filePath, 'File doesn\'t exists.'); + Storage::disk('avatar')->assertExists('public/files/' . $file->filename); } }