Selaa lähdekoodia

project detail

moell 1 vuosi sitten
vanhempi
säilyke
d74c2e08dc

+ 4 - 1
app/Http/Controllers/API/ProjectController.php

@@ -8,6 +8,7 @@ use App\Http\Requests\API\Project\LinkRequirementByPlanRequest;
 use App\Http\Requests\API\Project\LinkRequirementRequest;
 use App\Http\Requests\API\Project\PostponeRequest;
 use App\Http\Requests\API\Project\UnlinkRequirementRequest;
+use App\Http\Resources\API\ProjectDetailResource;
 use App\Http\Resources\API\SimplePlanResource;
 use App\Http\Resources\API\ProjectRequirementResource;
 use App\Http\Resources\API\ProjectResource;
@@ -80,7 +81,9 @@ class ProjectController extends Controller
      */
     public function show(string $id)
     {
-        //
+        $project = Project::findOrFail($id);
+
+        return new ProjectDetailResource($project);
     }
 
     /**

+ 34 - 0
app/Http/Resources/API/ProjectDetailResource.php

@@ -0,0 +1,34 @@
+<?php
+
+namespace App\Http\Resources\API;
+
+use Illuminate\Http\Request;
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class ProjectDetailResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @return array<string, mixed>
+     */
+    public function toArray(Request $request): array
+    {
+        return [
+            'id' => $this->id,
+            'name' => $this->name,
+            'code' => $this->code,
+            'status' => $this->status,
+            'const' => $this->const,
+            'begin' => $this->begin,
+            'end' => $this->end,
+            'available_days' => $this->available_days,
+            'latitude' => $this->latitude,
+            'longitude' => $this->longitude,
+            'type' => $this->type,
+            'acl' => $this->acl,
+            'whitelist' => $this->whitelist,
+            'description' => $this->description,
+        ];
+    }
+}

+ 27 - 0
tests/Feature/API/ProjectTest.php

@@ -41,6 +41,33 @@ class ProjectTest extends TestCase
             ]);
     }
 
+    public function test_project_detail()
+    {
+        $project = Project::factory()->create();
+
+        $response = $this->get(route('project.show', ['project' => $project->id]));
+
+        $response->assertStatus(200)
+            ->assertJsonStructure([
+                'data' => [
+                    'id',
+                    'name',
+                    'code',
+                    'status',
+                    'const',
+                    'begin',
+                    'end',
+                    'available_days',
+                    'latitude',
+                    'longitude',
+                    'type',
+                    'acl',
+                    'whitelist',
+                    'description',
+                ]
+            ]);
+    }
+
 
     public function test_project_create(): void
     {

+ 20 - 0
tests/Feature/tests/Feature/API/ProjectTest.php.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace Tests\Feature\tests\Feature\API;
+
+use Illuminate\Foundation\Testing\RefreshDatabase;
+use Illuminate\Foundation\Testing\WithFaker;
+use Tests\TestCase;
+
+class ProjectTest.php extends TestCase
+{
+    /**
+     * A basic feature test example.
+     */
+    public function test_example(): void
+    {
+        $response = $this->get('/');
+
+        $response->assertStatus(200);
+    }
+}