Completed
Push — feat/add-quality-gates ( b24265...ab5d16 )
by Guillem
02:59
created

itCanCreateRequestParameters()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 25
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 15
dl 0
loc 25
rs 9.7666
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
namespace ElevenLabs\Api\Factory;
3
4
use ElevenLabs\Api\Definition\RequestDefinition;
5
use ElevenLabs\Api\Definition\Parameter;
6
use ElevenLabs\Api\Definition\Parameters;
7
use ElevenLabs\Api\Definition\ResponseDefinition;
8
use ElevenLabs\Api\Schema;
9
use PHPUnit\Framework\TestCase;
10
11
class SwaggerSchemaFactoryTest extends TestCase
12
{
13
    /** @test */
14
    public function itShouldCreateASchemaFromAFile()
15
    {
16
        $schemaFile = 'file://'.__DIR__.'/../fixtures/petstore.json';
17
        $factory = new SwaggerSchemaFactory();
18
        $schema = $factory->createSchema($schemaFile);
19
20
        assertThat($schema, isInstanceOf(Schema::class));
21
    }
22
    /** @test */
23
    public function itShouldHaveSchemaProperties()
24
    {
25
        $schemaFile = 'file://'.__DIR__.'/../fixtures/petstore.json';
26
        $factory = new SwaggerSchemaFactory();
27
        $schema = $factory->createSchema($schemaFile);
28
29
        assertThat($schema->getHost(), equalTo('petstore.swagger.io'));
30
        assertThat($schema->getBasePath(), equalTo('/api'));
31
        assertThat($schema->getSchemes(), equalTo(['http']));
32
    }
33
    /** @test */
34
    public function itCanCreateARequestDefinition()
35
    {
36
        $schemaFile = 'file://'.__DIR__.'/../fixtures/petstore.json';
37
        $factory = new SwaggerSchemaFactory();
38
        $schema = $factory->createSchema($schemaFile);
39
40
        $requestDefinition = $schema->getRequestDefinition('findFood');
41
42
        assertThat($requestDefinition, isInstanceOf(RequestDefinition::class));
43
        assertThat($requestDefinition->getMethod(), equalTo('GET'));
44
        assertThat($requestDefinition->getOperationId(), equalTo('findFood'));
45
        assertThat($requestDefinition->getContentTypes(), equalTo(['application/json']));
46
        assertThat($requestDefinition->getPathTemplate(), equalTo('/api/food'));
47
        assertThat($requestDefinition->getRequestParameters(), isInstanceOf(Parameters::class));
48
        assertThat($requestDefinition->getResponseDefinition(304), isInstanceOf(ResponseDefinition::class));
49
    }
50
51
    /** @test */
52
    public function itCanCreateRequestParameters()
53
    {
54
        $schemaFile = 'file://'.__DIR__.'/../fixtures/petstore.json';
55
        $factory = new SwaggerSchemaFactory();
56
        $schema = $factory->createSchema($schemaFile);
57
58
        $requestParameters = $schema->getRequestDefinition('addPet')->getRequestParameters();
59
60
        assertThat($requestParameters, isInstanceOf(Parameters::class));
61
        assertThat($requestParameters->getBody(), isInstanceOf(Parameter::class));
62
        assertThat($requestParameters->getBodySchema(), isType('object'));
63
64
        $requestParameters = $schema->getRequestDefinition('findPetById')->getRequestParameters();
65
66
        assertThat($requestParameters->getPath(), containsOnlyInstancesOf(Parameter::class));
67
68
        $requestParameters = $schema->getRequestDefinition('findPets')->getRequestParameters();
69
70
        assertThat($requestParameters->getQuery(), containsOnlyInstancesOf(Parameter::class));
71
        assertThat($requestParameters->getQueryParametersSchema(), isType('object'));
72
73
        $requestParameters = $schema->getRequestDefinition('updatePet')->getRequestParameters();
74
75
        assertThat($requestParameters->getHeaders(), containsOnlyInstancesOf(Parameter::class));
76
        assertThat($requestParameters->getHeadersSchema(), isType('object'));
77
    }
78
79
    /** @test */
80
    public function itCanCreateAResponseDefinition()
81
    {
82
        $schemaFile = 'file://'.__DIR__.'/../fixtures/petstore.json';
83
        $factory = new SwaggerSchemaFactory();
84
        $schema = $factory->createSchema($schemaFile);
85
86
        $responseDefinition = $schema->getRequestDefinition('addPet')->getResponseDefinition(200);
87
88
        assertThat($responseDefinition, isInstanceOf(ResponseDefinition::class));
89
        assertThat($responseDefinition->getContentTypes(), contains('application/json'));
90
        assertThat($responseDefinition->getBodySchema(), isType('object'));
91
        assertThat($responseDefinition->getStatusCode(), equalTo(200));
92
    }
93
}
94