1 | <?php |
||
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 |