withoutVite(); $this->seed(\Database\Seeders\PermissionSeeder::class); $this->seed(\Database\Seeders\RoleSeeder::class); $this->admin = User::factory()->create(); $this->admin->roles()->attach(Role::where('slug', 'admin')->first()); $this->adminPath = config('cms.admin_path', 'loom'); Storage::fake('public'); } public function test_admin_can_view_media_index() { Media::create([ 'filename' => 'test.jpg', 'path' => 'media/test.jpg', 'mime_type' => 'image/jpeg', 'size' => 1024, ]); $response = $this->actingAs($this->admin)->get("/{$this->adminPath}/media"); $response->assertStatus(200); $response->assertSee('test.jpg'); } public function test_can_fetch_media_as_json() { Media::create([ 'filename' => 'test-json.jpg', 'path' => 'media/test-json.jpg', 'mime_type' => 'image/jpeg', 'size' => 1024, ]); $response = $this->actingAs($this->admin) ->getJson("/{$this->adminPath}/media"); $response->assertStatus(200); $response->assertJsonStructure([ 'media' => [ '*' => ['id', 'filename', 'path', 'url'] ] ]); $response->assertSee('test-json.jpg'); } public function test_admin_can_upload_media() { $file = UploadedFile::fake()->image('photo.jpg'); $response = $this->actingAs($this->admin)->post("/{$this->adminPath}/media/upload", [ 'file' => $file, ]); $response->assertStatus(201); $this->assertDatabaseHas('media', ['filename' => 'photo.jpg']); Storage::disk('public')->assertExists('media/photo.jpg'); } public function test_admin_can_update_focal_point() { $media = Media::create([ 'filename' => 'test.jpg', 'path' => 'media/test.jpg', 'mime_type' => 'image/jpeg', 'size' => 1024, 'focal_x' => 50, 'focal_y' => 50, ]); $response = $this->actingAs($this->admin)->put("/{$this->adminPath}/media", [ 'id' => $media->id, 'focal_x' => 25.5, 'focal_y' => 75.2, ]); $response->assertStatus(200); $this->assertDatabaseHas('media', [ 'id' => $media->id, 'focal_x' => 25.5, 'focal_y' => 75.2, ]); } public function test_admin_can_delete_media() { $media = Media::create([ 'filename' => 'test.jpg', 'path' => 'media/test.jpg', 'mime_type' => 'image/jpeg', 'size' => 1024, ]); Storage::disk('public')->put('media/test.jpg', 'fake content'); $response = $this->actingAs($this->admin)->delete("/{$this->adminPath}/media", [ 'id' => $media->id, ]); $response->assertStatus(200); $this->assertDatabaseMissing('media', ['id' => $media->id]); Storage::disk('public')->assertMissing('media/test.jpg'); } }