mirror of
https://github.com/ambieco/scribe.git
synced 2026-04-25 02:34:53 +08:00
Support partial resource controller (fixes #426)
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
20
tests/Fixtures/TestPartialResourceController.php
Normal file
20
tests/Fixtures/TestPartialResourceController.php
Normal 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()
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user