mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-17 17:47:13 +00:00
Fixed generating PHPDoc for methods with class templates (#1647)
* Fixed generating PHPDoc for methods with class templates * Fix style * Use getter for alias template names * Fixed missing class in static analysis
This commit is contained in:
@@ -66,6 +66,21 @@ class AliasTest extends TestCase
|
||||
$this->assertNotNull($this->getAliasMacro($alias, EloquentBuilder::class, $macro));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::detectTemplateNames
|
||||
*/
|
||||
public function testTemplateNamesAreDetected(): void
|
||||
{
|
||||
// Mock
|
||||
$alias = new AliasMock();
|
||||
|
||||
// Prepare
|
||||
$alias->setClasses([EloquentBuilder::class]);
|
||||
|
||||
// Test
|
||||
$this->assertSame(['TModel', 'TValue'], $alias->getTemplateNames());
|
||||
}
|
||||
|
||||
protected function getAliasMacro(Alias $alias, string $class, string $method): ?Macro
|
||||
{
|
||||
return Arr::first(
|
||||
@@ -82,6 +97,7 @@ class AliasTest extends TestCase
|
||||
/**
|
||||
* @internal
|
||||
* @noinspection PhpMultipleClassesDeclarationsInOneFile
|
||||
* @template TValue
|
||||
*/
|
||||
class AliasMock extends Alias
|
||||
{
|
||||
|
||||
@@ -193,6 +193,29 @@ DOC;
|
||||
$this->assertSame([], $method->getParamsWithDefault(false));
|
||||
$this->assertTrue($method->shouldReturn());
|
||||
}
|
||||
|
||||
public function testEloquentBuilderWithTemplates()
|
||||
{
|
||||
$reflectionClass = new \ReflectionClass(EloquentBuilder::class);
|
||||
$reflectionMethod = $reflectionClass->getMethod('firstOr');
|
||||
|
||||
$method = new Method($reflectionMethod, 'Builder', $reflectionClass, null, [], [], [], ['TModel']);
|
||||
|
||||
$output = <<<'DOC'
|
||||
/**
|
||||
* Execute the query and get the first result or call a callback.
|
||||
*
|
||||
* @template TValue
|
||||
* @param (\Closure(): TValue)|list<string> $columns
|
||||
* @param (\Closure(): TValue)|null $callback
|
||||
* @return TModel|TValue
|
||||
* @static
|
||||
*/
|
||||
DOC;
|
||||
$this->assertSame($output, $method->getDocComment(''));
|
||||
$this->assertSame('firstOr', $method->getName());
|
||||
$this->assertSame('\\' . EloquentBuilder::class, $method->getDeclaringClass());
|
||||
}
|
||||
}
|
||||
|
||||
class ExampleClass
|
||||
|
||||
Reference in New Issue
Block a user