From 65fde131296765a7360fea26fa7a0a7e66c05e8a Mon Sep 17 00:00:00 2001 From: DerManoMann Date: Fri, 27 Aug 2021 11:17:57 +1200 Subject: [PATCH] Add spec fixtures to validate reflection analyser results --- tests/Analysers/ReflectionAnalyserTest.php | 10 +++--- tests/Fixtures/Apis/Attributes/basic.php | 2 +- tests/Fixtures/Apis/Attributes/basic.yaml | 38 ++++++++++++++++++++++ tests/Fixtures/Apis/DocBlocks/basic.php | 2 +- tests/Fixtures/Apis/DocBlocks/basic.yaml | 38 ++++++++++++++++++++++ 5 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 tests/Fixtures/Apis/Attributes/basic.yaml create mode 100644 tests/Fixtures/Apis/DocBlocks/basic.yaml diff --git a/tests/Analysers/ReflectionAnalyserTest.php b/tests/Analysers/ReflectionAnalyserTest.php index abf94c188..babd415bf 100644 --- a/tests/Analysers/ReflectionAnalyserTest.php +++ b/tests/Analysers/ReflectionAnalyserTest.php @@ -72,9 +72,10 @@ public function testSingleFileDocBlock() $operations = $analysis->getAnnotationsOfType(Operation::class); $this->assertIsArray($operations); - file_put_contents(__DIR__ . '/basic_docblocks.yml', $analysis->openapi->toYaml()); - + $spec = $this->fixture('Apis/DocBlocks/basic.yaml'); + //file_put_contents($spec, $analysis->openapi->toYaml()); $this->assertTrue($analysis->validate()); + $this->assertSpecEquals(file_get_contents($spec), $analysis->openapi); } /** @@ -93,8 +94,9 @@ public function testSingleFileAttributes() $operations = $analysis->getAnnotationsOfType(Operation::class); $this->assertIsArray($operations); - file_put_contents(__DIR__ . '/basic_attributes.yml', $analysis->openapi->toYaml()); - + $spec = $this->fixture('Apis/Attributes/basic.yaml'); + //file_put_contents($spec, $analysis->openapi->toYaml()); $this->assertTrue($analysis->validate()); + $this->assertSpecEquals(file_get_contents($spec), $analysis->openapi); } } diff --git a/tests/Fixtures/Apis/Attributes/basic.php b/tests/Fixtures/Apis/Attributes/basic.php index 64d2f65cc..7e4315318 100644 --- a/tests/Fixtures/Apis/Attributes/basic.php +++ b/tests/Fixtures/Apis/Attributes/basic.php @@ -8,7 +8,7 @@ use OpenApi\Annotations as OA; -#[OA\Info(version: '1.0.0', title: 'Basic single file Php8 API')] +#[OA\Info(version: '1.0.0', title: 'Basic single file Attributes API')] class OpenApiSpec { diff --git a/tests/Fixtures/Apis/Attributes/basic.yaml b/tests/Fixtures/Apis/Attributes/basic.yaml new file mode 100644 index 000000000..2b4e82e88 --- /dev/null +++ b/tests/Fixtures/Apis/Attributes/basic.yaml @@ -0,0 +1,38 @@ +openapi: 3.0.0 +info: + title: 'Basic single file Attributes API' + version: 1.0.0 +paths: + '/products/{product_id}': + get: + tags: + - Products + operationId: ce0e618e1b2e89d5464e39a96cc178dd + responses: + '200': + description: 'successful operation' + content: + application/json: + schema: + $ref: '#/components/schemas/Product' + '401': + description: oops +components: + schemas: + NameTrait: + properties: + name: + description: 'The name.' + type: object + Product: + title: Product + description: Product + allOf: + - + $ref: '#/components/schemas/NameTrait' + - + properties: + id: + description: 'The id.' + format: int64 + example: 1 diff --git a/tests/Fixtures/Apis/DocBlocks/basic.php b/tests/Fixtures/Apis/DocBlocks/basic.php index 2d8806de5..98c140b66 100644 --- a/tests/Fixtures/Apis/DocBlocks/basic.php +++ b/tests/Fixtures/Apis/DocBlocks/basic.php @@ -11,7 +11,7 @@ /** * @OA\Info( * version="1.0.0", - * title="Basic single file API" + * title="Basic single file DocBlocks API" * ) */ class OpenApiSpec diff --git a/tests/Fixtures/Apis/DocBlocks/basic.yaml b/tests/Fixtures/Apis/DocBlocks/basic.yaml new file mode 100644 index 000000000..6864c24f8 --- /dev/null +++ b/tests/Fixtures/Apis/DocBlocks/basic.yaml @@ -0,0 +1,38 @@ +openapi: 3.0.0 +info: + title: 'Basic single file DocBlocks API' + version: 1.0.0 +paths: + '/products/{product_id}': + get: + tags: + - Products + operationId: 430e769e8375f88711f6a2c5ad8b5dee + responses: + '200': + description: 'successful operation' + content: + application/json: + schema: + $ref: '#/components/schemas/Product' + '401': + description: oops +components: + schemas: + NameTrait: + properties: + name: + description: 'The name.' + type: object + Product: + title: Product + description: Product + allOf: + - + $ref: '#/components/schemas/NameTrait' + - + properties: + id: + description: 'The id.' + format: int64 + example: 1