/** * @param array $provider * * @dataProvider provider */ public function testCreate($provider) { $route = $this->getMockBuilder('Symfony\\Component\\Routing\\Route')->disableOriginalConstructor()->getMock(); $expressionFunctionProvider = $this->getMock('Symfony\\Component\\ExpressionLanguage\\ExpressionFunctionProviderInterface'); $routeCollection = $this->getMockBuilder('Symfony\\Component\\Routing\\RouteCollection')->getMock(); if (!empty($provider['route'])) { $routeCollection->expects($this->any())->method('get')->with($provider['route'])->willReturn($route); } $router = $this->getMockBuilder('Symfony\\Bundle\\FrameworkBundle\\Routing\\Router')->disableOriginalConstructor()->getMock(); $router->expects($this->any())->method('getRouteCollection')->willReturn($routeCollection); $apiDocFactory = new ApiDocFactory($router); $output = $apiDocFactory->create($provider); /** @var ApiDoc $apiDoc */ $apiDoc = $output['annotation']; $this->assertArrayHasKey('resource', $output); $this->assertEquals($provider['resource'], $output['resource']); $this->assertArrayHasKey('annotation', $output); $testRequirements = $this->requirementsBuilder($provider['requirements']); $this->assertEquals($testRequirements, $apiDoc->getRequirements()); $testParameters = $this->parametersBuilder($provider['parameters']); $this->assertEquals($testParameters, $apiDoc->getParameters()); if (!empty($provider['route'])) { $this->assertInstanceOf('Symfony\\Component\\Routing\\Route', $apiDoc->getRoute()); } $this->assertEquals($provider['description'], $apiDoc->getDescription()); $this->assertEquals($provider['section'], $apiDoc->getSection()); $this->assertEquals($provider['output'], $apiDoc->getOutput()); }
/** * @param array|string[] $files * * @return bool */ public function parse(array $files) { $output = array(); foreach ($files as $file) { $fileSystem = new Filesystem(); if (!$fileSystem->exists($file)) { throw new FileNotFoundException(null, 0, null, $file); } $fileDocumentations = Yaml::parse($file); if (is_array($fileDocumentations)) { foreach ($fileDocumentations as $documentation) { $output[] = $this->apiDocFactory->create($documentation); } } } return $output; }