diff --git a/tests/Http/MediaControllerTest.php b/tests/Http/MediaControllerTest.php new file mode 100644 index 00000000..1be9456b --- /dev/null +++ b/tests/Http/MediaControllerTest.php @@ -0,0 +1,74 @@ +admin = User::factory()->create(); + + $this->field = Root::instance() + ->resources + ->resolve('users') + ->resolveFields($this->app['request']) + ->first(function ($field) { + return $field->getModelAttribute() === 'media'; + }); + } + + public function test_a_media_controller_handles_index(): void + { + $this->actingAs($this->admin) + ->get('/root/users/'.$this->admin->getKey().'/fields/media') + ->assertOk() + ->assertJson($this->field->paginateRelatable($this->app['request'], $this->admin)->toArray()); + } + + public function test_a_media_controller_handles_store(): void + { + Queue::fake(); + + $this->actingAs($this->admin) + ->post( + '/root/users/'.$this->admin->getKey().'/fields/media', + ['file' => UploadedFile::fake()->image('test.png')], + ['X-Chunk-Index' => 1, 'X-Chunk-Total' => 1] + ) + ->assertCreated() + ->assertJson(['processing' => false]); + + $this->assertDatabaseHas('root_media', ['name' => 'test']); + + Queue::assertPushedWithChain(MoveFile::class, [PerformConversions::class]); + } + + public function test_a_media_controller_handles_destroy(): void + { + $medium = Medium::factory()->create(); + + $this->actingAs($this->admin) + ->delete('/root/users/'.$this->admin->getKey().'/fields/media', ['ids' => [$medium->getKey()]]) + ->assertOk() + ->assertJson(['deleted' => 1]); + + $this->assertDatabaseMissing('root_media', ['id' => $medium->getKey()]); + } +} diff --git a/tests/Resources/UserResource.php b/tests/Resources/UserResource.php index 5c5b16e8..0a3891ac 100644 --- a/tests/Resources/UserResource.php +++ b/tests/Resources/UserResource.php @@ -4,6 +4,7 @@ use Cone\Root\Fields\Email; use Cone\Root\Fields\ID; +use Cone\Root\Fields\Media; use Cone\Root\Fields\Text; use Cone\Root\Resources\Resource; use Cone\Root\Tests\Actions\SendPasswordResetNotification; @@ -30,6 +31,7 @@ public function fields(Request $request): array Text::make('Name')->searchable(), Email::make('Email')->searchable(), Text::make('Password')->visibleOn(['create', 'update']), + Media::make('Media'), ]; }