Passed
Branch master (4d15ff)
by Ole
03:17 queued 22s
created

SwaggerProviderTest::provideDataForDefaultValue()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 15
rs 9.4285
cc 1
eloc 11
nc 1
nop 0
1
<?php
2
3
4
namespace Basster\Silex\Provider\Test\Swagger;
5
6
7
use Basster\Silex\Provider\Swagger\SwaggerProvider;
8
use Basster\Silex\Provider\Swagger\SwaggerServiceKey;
9
use Silex\Application;
10
use Silex\ControllerCollection;
11
12
class SwaggerProviderTest extends \PHPUnit_Framework_TestCase implements SwaggerServiceKey
13
{
14
    /**
15
     * @test
16
     * @dataProvider provideDataForDefaultValue
17
     */
18
    public function defaultValue($key, $value = null)
19
    {
20
        $app = $this->getAppWithRegisteredProvider();
21
22
        self::assertArrayHasKey($key, $app);
23
        self::assertEquals($value, $app[$key]);
24
    }
25
26
    public function provideDataForDefaultValue()
27
    {
28
        return [
29
          self::SWAGGER_API_DOC_PATH => [
30
            self::SWAGGER_API_DOC_PATH,
31
            '/api/api-docs',
32
          ],
33
          self::SWAGGER_EXCLUDE_PATH => [self::SWAGGER_EXCLUDE_PATH],
34
          self::SWAGGER_CACHE        => [self::SWAGGER_CACHE, []],
35
          self::SWAGGER_SERVICE_PATH => [self::SWAGGER_SERVICE_PATH],
36
          self::SWAGGER_ANALYSER     => [self::SWAGGER_ANALYSER],
37
          self::SWAGGER_ANALYSIS     => [self::SWAGGER_ANALYSIS],
38
          self::SWAGGER_PROCESSORS   => [self::SWAGGER_PROCESSORS, []],
39
        ];
40
    }
41
42
    /**
43
     * @test
44
     */
45
    public function isSwaggerConfigRegistered()
46
    {
47
        $app = $this->getAppWithRegisteredProvider([self::SWAGGER_SERVICE_PATH => __DIR__]);
48
49
        self::assertArrayHasKey(self::SWAGGER_CONFIG, $app);
50
        self::assertInstanceOf('Basster\Silex\Provider\Swagger\SwaggerConfig',
51
          $app[self::SWAGGER_CONFIG]);
52
53
    }
54
55
    /**
56
     * @test
57
     */
58
    public function isSwaggerServiceRegistered()
59
    {
60
        $config = $this->prophesize('Basster\Silex\Provider\Swagger\SwaggerConfig');
61
62
        $app = $this->getAppWithRegisteredProvider([self::SWAGGER_CONFIG => $config->reveal()]);
63
64
        self::assertArrayHasKey(self::SWAGGER_SERVICE, $app);
65
        self::assertInstanceOf('Basster\Silex\Provider\Swagger\SwaggerService',
66
          $app[self::SWAGGER_SERVICE]);
67
    }
68
69
    /**
70
     * @test
71
     */
72
    public function isSwaggerRegistered()
73
    {
74
        $swagger = $this->prophesize('Swagger\Annotations\Swagger')->reveal();
75
        $service = $this->prophesize('Basster\Silex\Provider\Swagger\SwaggerService');
76
        $service->getSwagger()->shouldBeCalled()->willReturn($swagger);
77
78
        $app                        = $this->getAppWithRegisteredProvider();
79
        $app[self::SWAGGER_SERVICE] = $service->reveal();
80
81
        self::assertArrayHasKey(self::SWAGGER, $app);
82
        self::assertEquals($swagger, $app[self::SWAGGER]);
83
    }
84
85
    /**
86
     * @test
87
     */
88
    public function isApiRouteRegistered()
89
    {
90
        $app  = new Application();
91
        $path = '/docs/swagger.json';
92
        $app->register(new SwaggerProvider(),
93
          [self::SWAGGER_API_DOC_PATH => $path]);
94
        $app->boot();
95
96
        /** @var ControllerCollection $controllers */
97
        $controllers = $app['controllers'];
98
        $routes      = $controllers->flush()->all();
99
100
101
        self::assertArrayHasKey('GET_docs_swagger.json', $routes);
102
        $route = $routes['GET_docs_swagger.json'];
103
        self::assertEquals($path, $route->getPath());
104
    }
105
106
    /**
107
     * @param $values
108
     *
109
     * @return \Silex\Application
110
     */
111
    public function getAppWithRegisteredProvider(array $values = [])
112
    {
113
        $app = new Application($values);
114
        $app->register(new SwaggerProvider());
115
        return $app;
116
    }
117
}
118