Support partial resource controller (fixes #426)

This commit is contained in:
An Phan
2018-12-11 18:04:25 +01:00
parent 8fca0199d7
commit b530057e68
3 changed files with 51 additions and 0 deletions

View File

@@ -3,6 +3,7 @@
namespace Mpociot\ApiDoc\Commands;
use ReflectionClass;
use ReflectionException;
use Illuminate\Routing\Route;
use Illuminate\Console\Command;
use Mpociot\Reflection\DocBlock;
@@ -215,12 +216,19 @@ class GenerateDocumentation extends Command
* @param $route
*
* @return bool
* @throws ReflectionException
*/
private function isRouteVisibleForDocumentation($route)
{
list($class, $method) = explode('@', $route);
$reflection = new ReflectionClass($class);
if (!$reflection->hasMethod($method)) {
return false;
}
$comment = $reflection->getMethod($method)->getDocComment();
if ($comment) {
$phpdoc = new DocBlock($comment);

View File

@@ -0,0 +1,20 @@
<?php
namespace Mpociot\ApiDoc\Tests\Fixtures;
class TestPartialResourceController
{
/**
* @group Group A
*/
public function index()
{
}
/**
* @group Group B
*/
public function update()
{
}
}

View File

@@ -2,6 +2,7 @@
namespace Mpociot\ApiDoc\Tests;
use ReflectionException;
use RecursiveIteratorIterator;
use RecursiveDirectoryIterator;
use Orchestra\Testbench\TestCase;
@@ -11,6 +12,7 @@ use Mpociot\ApiDoc\Tests\Fixtures\TestController;
use Mpociot\ApiDoc\ApiDocGeneratorServiceProvider;
use Illuminate\Support\Facades\Route as RouteFacade;
use Mpociot\ApiDoc\Tests\Fixtures\TestResourceController;
use Mpociot\ApiDoc\Tests\Fixtures\TestPartialResourceController;
class GenerateDocumentationTest extends TestCase
{
@@ -256,6 +258,27 @@ class GenerateDocumentationTest extends TestCase
$this->assertContains('Лорем ипсум долор сит амет', $generatedMarkdown);
}
/** @test */
public function supports_partial_resource_controller()
{
RouteFacade::resource('/api/partial', TestPartialResourceController::class);
config(['apidoc.routes.0.prefixes' => ['api/*']]);
$thrownException = null;
try {
$this->artisan('apidoc:generate');
} catch (ReflectionException $e) {
$thrownException = $e;
}
$this->assertNull($thrownException);
$generatedMarkdown = file_get_contents(__DIR__.'/../public/docs/source/index.md');
$this->assertContains('Group A', $generatedMarkdown);
$this->assertContains('Group B', $generatedMarkdown);
}
/**
* @param string $command
* @param array $parameters