Browse Source

Testing with fake storage and fake file

pull/1/head
Nafies Luthfi 8 years ago
parent
commit
3a90cca863
  1. 7
      app/Http/Controllers/Projects/FilesController.php
  2. 2
      resources/views/projects/files.blade.php
  3. 2
      storage/framework/testing/.gitignore
  4. 21
      tests/Feature/Projects/UploadFilesTest.php

7
app/Http/Controllers/Projects/FilesController.php

@ -33,6 +33,7 @@ class FilesController extends Controller
public function create(Request $request, $fileableId) public function create(Request $request, $fileableId)
{ {
$this->validate($request, [ $this->validate($request, [
'fileable_type' => 'required',
'file' => 'required|file|max:10000', 'file' => 'required|file|max:10000',
'title' => 'required|max:60', 'title' => 'required|max:60',
'description' => 'nullable|max:255', 'description' => 'nullable|max:255',
@ -96,7 +97,11 @@ class FilesController extends Controller
$fileData['description'] = $data['description']; $fileData['description'] = $data['description'];
\DB::beginTransaction(); \DB::beginTransaction();
// dd(is_dir(storage_path('app/public/files'))); // 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->move(storage_path('app/public/files'));
$file = File::create($fileData); $file = File::create($fileData);
\DB::commit(); \DB::commit();

2
resources/views/projects/files.blade.php

@ -46,7 +46,7 @@
</td> </td>
</tr> </tr>
@empty @empty
<tr><td colspan="5">{{ trans('file.empty') }}</td></tr>
<tr><td colspan="6">{{ trans('file.empty') }}</td></tr>
@endforelse @endforelse
</tbody> </tbody>
</table> </table>

2
storage/framework/testing/.gitignore

@ -0,0 +1,2 @@
*
!.gitignore

21
tests/Feature/Projects/UploadFilesTest.php

@ -2,7 +2,11 @@
namespace Tests\Feature\Projects; namespace Tests\Feature\Projects;
use App\Entities\Projects\File;
use App\Entities\Projects\Project; use App\Entities\Projects\Project;
use Illuminate\Http\Testing\FileFactory;
use Illuminate\Http\UploadedFile;
use Storage;
use Tests\TestCase; use Tests\TestCase;
class UploadFilesTest extends TestCase class UploadFilesTest extends TestCase
@ -10,6 +14,7 @@ class UploadFilesTest extends TestCase
/** @test */ /** @test */
public function user_can_upload_document_to_a_project() public function user_can_upload_document_to_a_project()
{ {
Storage::fake('avatar');
$user = $this->adminUserSigningIn(); $user = $this->adminUserSigningIn();
$project = factory(Project::class)->create(['owner_id' => $user->id]); $project = factory(Project::class)->create(['owner_id' => $user->id]);
$this->visit(route('projects.files', $project->id)); $this->visit(route('projects.files', $project->id));
@ -17,7 +22,7 @@ class UploadFilesTest extends TestCase
$this->seeElement('input', ['id' => 'file']); $this->seeElement('input', ['id' => 'file']);
$this->seeElement('input', ['type' => 'submit', 'value' => trans('file.upload')]); $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('Judul file', 'title');
$this->type('Deskripsi file yang diuplod.', 'description'); $this->type('Deskripsi file yang diuplod.', 'description');
$this->press(trans('file.upload')); $this->press(trans('file.upload'));
@ -32,18 +37,23 @@ class UploadFilesTest extends TestCase
]); ]);
$file = $project->files->first(); $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 */ /** @test */
public function user_can_edit_document_file_on_a_project() public function user_can_edit_document_file_on_a_project()
{ {
Storage::fake('avatar');
$user = $this->adminUserSigningIn(); $user = $this->adminUserSigningIn();
$project = factory(Project::class)->create(['owner_id' => $user->id]); $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->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('Judul file', 'title');
$this->type('Deskripsi file yang diuplod.', 'description'); $this->type('Deskripsi file yang diuplod.', 'description');
$this->press(trans('file.upload')); $this->press(trans('file.upload'));
@ -68,7 +78,6 @@ class UploadFilesTest extends TestCase
'description' => 'Edit Deskripsi file yang diuplod.', '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);
} }
} }
Loading…
Cancel
Save