浏览代码

Update tests

Shalvah 3 月之前
父节点
当前提交
37276c5ebc

+ 6 - 0
camel/Extraction/ExtractedEndpointData.php

@@ -95,6 +95,12 @@ class ExtractedEndpointData extends BaseDTO
         };
     }
 
+    /**
+     * @param Route $route
+     * @param array $extras Only used for quick overrides in tests
+     * @return self
+     * @throws \ReflectionException
+     */
     public static function fromRoute(Route $route, array $extras = []): self
     {
         $httpMethods = self::getMethods($route);

+ 1 - 1
src/Extracting/Strategies/Responses/ResponseCalls.php

@@ -69,7 +69,7 @@ class ResponseCalls extends Strategy
         $hardcodedFileParams = collect($hardcodedFileParams)->map(function ($filePath) {
             $fileName = basename($filePath);
             return new UploadedFile(
-                $filePath, $fileName, mime_content_type($filePath), 0, false
+                $filePath, $fileName, mime_content_type($filePath), test: true
             );
         })->toArray();
         $fileParameters = array_merge($endpointData->fileParameters, $hardcodedFileParams);

+ 20 - 8
tests/Strategies/Responses/ResponseCallsTest.php

@@ -22,7 +22,7 @@ class ResponseCallsTest extends BaseLaravelTest
     {
         $route = LaravelRouteFacade::post('/shouldFetchRouteResponse', [TestController::class, 'shouldFetchRouteResponse']);
 
-        $responses = $this->invokeStrategy($route, settings: ['methods' => '*']);
+        $responses = $this->invokeStrategy($route);
 
         $this->assertEquals(200, $responses[0]['status']);
         $this->assertArraySubset([
@@ -39,7 +39,22 @@ class ResponseCallsTest extends BaseLaravelTest
     {
         $route = RouteFacade::post('/withFormDataParams', [TestController::class, 'withFormDataParams']);
 
-        $responses = $this->invokeStrategy($route, settings: ['methods' => 'POST *']);
+        /* This doesn't work. It always gives an error, "the file failed to upload". However, uploading files worked when they are extracted params
+        $endpointData = ExtractedEndpointData::fromRoute($route, [ 'headers' => [ 'accept' => 'application/json' ] ]);
+        $responses = $this->invokeStrategy($endpointData, settings: [
+            'fileParams' => [ 'image' => 'config/scribe.php' ],
+            'bodyParams' => [ 'name' => 'cat.jpg' ]
+        ]);
+        */
+        $this->setConfig([
+            'strategies.responses' => [
+                [ResponseCalls::class,
+                    ['only' => 'POST *']
+                ],
+            ]
+        ]);
+        $parsed = (new Extractor())->processRoute($route);
+        $responses = $parsed->responses->toArray();
 
         $this->assertCount(1, $responses);
         $this->assertArraySubset([
@@ -64,7 +79,6 @@ class ResponseCallsTest extends BaseLaravelTest
         ]);
 
         $responses = $this->invokeStrategy($endpointData, settings: [
-            'methods' => ['*'],
             'queryParams' => [
                 'queryParam' => 'queryValue',
             ],
@@ -86,12 +100,11 @@ class ResponseCallsTest extends BaseLaravelTest
     public function can_override_application_config_during_response_call()
     {
         $route = LaravelRouteFacade::post('/echoesConfig', [TestController::class, 'echoesConfig']);
-        $responses = $this->invokeStrategy($route, settings: ['methods' => '*']);
+        $responses = $this->invokeStrategy($route);
         $originalValue = json_decode($responses[0]['content'], true)['app.env'];
 
         $now = time();
         $responses = $this->invokeStrategy($route, settings: [
-            'methods' => ['*'],
             'config' => [
                 'app.env' => $now,
             ],
@@ -122,7 +135,6 @@ class ResponseCallsTest extends BaseLaravelTest
             ],
         ]);
         $responses = $this->invokeStrategy($endpointData, settings: [
-            'methods' => ['*'],
             'queryParams' => [
                 'queryParam' => 'queryValue',
             ],
@@ -155,7 +167,7 @@ class ResponseCallsTest extends BaseLaravelTest
                 ],
             ]),
         ]);
-        $responses = $this->invokeStrategy($endpointData, settings: ['methods' => '*']);
+        $responses = $this->invokeStrategy($endpointData);
 
         $this->assertNull($responses);
     }
@@ -165,7 +177,7 @@ class ResponseCallsTest extends BaseLaravelTest
         return Extractor::transformOldRouteRulesIntoNewSettings('responses', $rules, ResponseCalls::class);
     }
 
-    protected function invokeStrategy(ExtractedEndpointData|Route $route, $settings): ?array
+    protected function invokeStrategy(ExtractedEndpointData|Route $route, $settings = []): ?array
     {
         $strategy = new ResponseCalls(new DocumentationConfig([]));
         return $strategy(