Fixed Dingo part of issue #30

This commit is contained in:
Marcel Pociot
2016-10-06 14:43:13 +02:00
parent 3f0b81a2e8
commit f7f840771c
2 changed files with 30 additions and 3 deletions

View File

@@ -280,8 +280,12 @@ class GenerateDocumentation extends Command
$parsedRoutes = [];
foreach ($routes as $route) {
if (empty($allowedRoutes) || in_array($route->getName(), $allowedRoutes) || str_is($routePrefix, $route->uri()) || in_array($middleware, $route->middleware())) {
$parsedRoutes[] = $generator->processRoute($route, $bindings, $this->option('header'), $withResponse);
$this->info('Processed route: ['.implode(',', $route->getMethods()).'] '.$route->uri());
if ($this->isValidRoute($route) && $this->isRouteVisibleForDocumentation($route->getAction()['uses'])) {
$parsedRoutes[] = $generator->processRoute($route, $bindings, $this->option('header'), $withResponse);
$this->info('Processed route: [' . implode(',', $route->getMethods()) . '] ' . $route->uri());
} else {
$this->warn('Skipping route: ['.implode(',', $route->getMethods()).'] '.$route->uri());
}
}
}

View File

@@ -2,10 +2,12 @@
namespace Mpociot\ApiDoc\Tests;
use Dingo\Api\Provider\LaravelServiceProvider;
use Illuminate\Contracts\Console\Kernel;
use Illuminate\Routing\Route;
use Mpociot\ApiDoc\ApiDocGeneratorServiceProvider;
use Mpociot\ApiDoc\Generators\LaravelGenerator;
use Mpociot\ApiDoc\Tests\Fixtures\DingoTestController;
use Orchestra\Testbench\TestCase;
use Mpociot\ApiDoc\Tests\Fixtures\TestController;
use Illuminate\Support\Facades\Route as RouteFacade;
@@ -39,7 +41,10 @@ class GenerateDocumentationTest extends TestCase
*/
protected function getPackageProviders($app)
{
return [ApiDocGeneratorServiceProvider::class];
return [
LaravelServiceProvider::class,
ApiDocGeneratorServiceProvider::class
];
}
public function testConsoleCommandNeedsAPrefixOrRoute()
@@ -62,6 +67,24 @@ class GenerateDocumentationTest extends TestCase
$this->assertContains('Processed route: [GET,HEAD] api/test', $output);
}
public function testConsoleCommandDoesNotWorkWithClosureUsingDingo()
{
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function ($api) {
$api->get('/closure', function () {
return 'foo';
});
$api->get('/test', DingoTestController::class.'@parseMethodDescription');
$output = $this->artisan('api:generate', [
'--router' => 'dingo',
'--routePrefix' => 'v1',
]);
$this->assertContains('Skipping route: [GET,HEAD] closure', $output);
$this->assertContains('Processed route: [GET,HEAD] test', $output);
});
}
public function testCanSkipSingleRoutesCommandDoesNotWorkWithClosure()
{
RouteFacade::get('/api/skip', TestController::class.'@skip');