Pārlūkot izejas kodu

Add test for feature update

ccec1t91077 2 gadi atpakaļ
vecāks
revīzija
7e349d6128

+ 8 - 0
tests/Fixtures/TestController.php

@@ -196,6 +196,14 @@ class TestController extends Controller
         return new TestUserApiResource(Utils::getModelFactory(TestUser::class)->make(['id' => 0]));
     }
 
+    /**
+     * @apiResource \Knuckles\Scribe\Tests\Fixtures\TestEmptyApiResource
+     */
+    public function withEmptyApiResource()
+    {
+        return new TestEmptyApiResource();
+    }
+
     /**
      * @group Other😎
      *

+ 47 - 0
tests/Fixtures/TestEmptyApiResource.php

@@ -0,0 +1,47 @@
+<?php
+
+namespace Knuckles\Scribe\Tests\Fixtures;
+
+use Illuminate\Http\Request;
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class TestEmptyApiResource extends JsonResource
+{
+    /**
+     * Create a new resource instance.
+     *
+     * @param  mixed  $resource
+     * @return void
+     */
+    public function __construct($resource = [])
+    {
+        $this->resource = $resource;
+    }
+
+    /**
+     * Get any additional data that should be returned with the resource array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array
+     */
+    public function with(Request $request)
+    {
+        return [
+            'request-id' => 'ea02ebc1-4e3c-497f-9ea8-7a1ac5008af2',
+            'error_code' => 0,
+            'messages'   => []
+        ];
+    }
+
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     *
+     * @return array
+     */
+    public function toArray($request)
+    {
+        return [];
+    }
+}

+ 25 - 0
tests/Strategies/Responses/UseApiResourceTagsTest.php

@@ -84,6 +84,31 @@ class UseApiResourceTagsTest extends BaseLaravelTest
         ], $results);
     }
 
+    /** @test */
+    public function can_parse_apiresource_tags_without_apiresourcemodel()
+    {
+        $config = new DocumentationConfig([]);
+
+        $route = new Route(['POST'], "/somethingRandom", ['uses' => [TestController::class, 'dummy']]);
+
+        $strategy = new UseApiResourceTags($config);
+        $tags = [
+            new Tag('apiResource', '\Knuckles\Scribe\Tests\Fixtures\TestEmptyApiResource')
+        ];
+        $results = $strategy->getApiResourceResponseFromTags($strategy->getApiResourceTag($tags), $tags, ExtractedEndpointData::fromRoute($route));
+        $this->assertArraySubset([
+            [
+                'status' => 200,
+                'content' => json_encode([
+                    'data' => [],
+                    'request-id' => 'ea02ebc1-4e3c-497f-9ea8-7a1ac5008af2',
+                    'error_code' => 0,
+                    'messages' => []
+                ]),
+            ],
+        ], $results);
+    }
+
     /** @test */
     public function respects_models_source_settings()
     {