Skip to content

Commit

Permalink
Add tests for new tags
Browse files Browse the repository at this point in the history
  • Loading branch information
jaapio committed Nov 4, 2024
1 parent fcb5c3d commit 54e10d4
Show file tree
Hide file tree
Showing 7 changed files with 191 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/DocBlock/Tags/Template.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
/**
* Reflection class for a {@}template tag in a Docblock.
*/
final class Template extends TagWithType
final class Template extends BaseTag
{
/** @var non-empty-string */
private string $templateName;
Expand Down
32 changes: 32 additions & 0 deletions tests/integration/InterpretingDocBlocksTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
use phpDocumentor\Reflection\DocBlock\Tags\Return_;
use phpDocumentor\Reflection\DocBlock\Tags\See;
use phpDocumentor\Reflection\DocBlock\Tags\Since;
use phpDocumentor\Reflection\DocBlock\Tags\Template;
use phpDocumentor\Reflection\PseudoTypes\ConstExpression;
use phpDocumentor\Reflection\Types\Array_;
use phpDocumentor\Reflection\Types\Compound;
Expand Down Expand Up @@ -431,4 +432,35 @@ public function testIndentationIsKept(): void
$docblock
);
}

public function testProcessTemplateTag(): void
{
$docComment = <<<DOCBLOCK
/**
* @template T as \Type this is a description
* @template TDefault as \Type = \\String_ this is a description
*/
DOCBLOCK;

$factory = DocBlockFactory::createInstance();
$docblock = $factory->create($docComment);

self::assertEquals(
[
new Template(
'T',
new Object_(new Fqsen('\\Type')),
new Mixed_(),
new Description('this is a description')
),
new Template(
'TDefault',
new Object_(new Fqsen('\\Type')),
new Object_(new Fqsen('\\String_')),
new Description('this is a description')
),
],
$docblock->getTags()
);
}
}
30 changes: 30 additions & 0 deletions tests/unit/DocBlock/Tags/ExtendsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

declare(strict_types=1);

namespace phpDocumentor\Reflection\DocBlock\Tags;

use phpDocumentor\Reflection\Fqsen;
use phpDocumentor\Reflection\Types\Object_;
use PHPUnit\Framework\TestCase;

/**
* @covers \phpDocumentor\Reflection\DocBlock\Tags\Extends_
*/
final class ExtendsTest extends TestCase
{
public function testExtendsCreatedCorrectly(): void
{
$type = new Object_(new Fqsen('\\Type'));
$fixture = new Extends_($type);
$this->assertSame('extends', $fixture->getName());
$this->assertSame($type, $fixture->getType());
}

public function testRendersCorrectly(): void
{
$type = new Object_(new Fqsen('\\Type'));
$fixture = new Extends_($type);
$this->assertSame('@extends \\Type', $fixture->render());
}
}
30 changes: 30 additions & 0 deletions tests/unit/DocBlock/Tags/ImplementsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

declare(strict_types=1);

namespace phpDocumentor\Reflection\DocBlock\Tags;

use phpDocumentor\Reflection\Fqsen;
use phpDocumentor\Reflection\Types\Object_;
use PHPUnit\Framework\TestCase;

/**
* @covers \phpDocumentor\Reflection\DocBlock\Tags\Implements_
*/
final class ImplementsTest extends TestCase
{
public function testCreatedCorrectly(): void
{
$type = new Object_(new Fqsen('\\Type'));
$fixture = new Implements_($type);
$this->assertSame('implements', $fixture->getName());
$this->assertSame($type, $fixture->getType());
}

public function testRendersCorrectly(): void
{
$type = new Object_(new Fqsen('\\Type'));
$fixture = new Implements_($type);
$this->assertSame('@implements \\Type', $fixture->render());
}
}
30 changes: 30 additions & 0 deletions tests/unit/DocBlock/Tags/TemplateExtendsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

declare(strict_types=1);

namespace phpDocumentor\Reflection\DocBlock\Tags;

use phpDocumentor\Reflection\Fqsen;
use phpDocumentor\Reflection\Types\Object_;
use PHPUnit\Framework\TestCase;

/**
* @covers \phpDocumentor\Reflection\DocBlock\Tags\TemplateExtends
*/
final class TemplateExtendsTest extends TestCase
{
public function testExtendsCreatedCorrectly(): void
{
$type = new Object_(new Fqsen('\\Type'));
$fixture = new TemplateExtends($type);
$this->assertSame('template-extends', $fixture->getName());
$this->assertSame($type, $fixture->getType());
}

public function testRendersCorrectly(): void
{
$type = new Object_(new Fqsen('\\Type'));
$fixture = new TemplateExtends($type);
$this->assertSame('@template-extends \\Type', $fixture->render());
}
}
30 changes: 30 additions & 0 deletions tests/unit/DocBlock/Tags/TemplateImplementsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

declare(strict_types=1);

namespace phpDocumentor\Reflection\DocBlock\Tags;

use phpDocumentor\Reflection\Fqsen;
use phpDocumentor\Reflection\Types\Object_;
use PHPUnit\Framework\TestCase;

/**
* @covers \phpDocumentor\Reflection\DocBlock\Tags\TemplateImplements
*/
final class TemplateImplementsTest extends TestCase
{
public function testCreatedCorrectly(): void
{
$type = new Object_(new Fqsen('\\Type'));
$fixture = new TemplateImplements($type);
$this->assertSame('template-implements', $fixture->getName());
$this->assertSame($type, $fixture->getType());
}

public function testRendersCorrectly(): void
{
$type = new Object_(new Fqsen('\\Type'));
$fixture = new TemplateImplements($type);
$this->assertSame('@template-implements \\Type', $fixture->render());
}
}
38 changes: 38 additions & 0 deletions tests/unit/DocBlock/Tags/TemplateTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?php

declare(strict_types=1);

namespace phpDocumentor\Reflection\DocBlock\Tags;

use phpDocumentor\Reflection\DocBlock\Description;
use phpDocumentor\Reflection\Types\Mixed_;
use phpDocumentor\Reflection\Types\String_;
use PHPUnit\Framework\TestCase;

/**
* @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Template
* @covers ::<private>
*/
final class TemplateTest extends TestCase
{
/**
* @covers ::__construct
* @covers ::getTemplateName
* @covers ::getBound
* @covers ::getDefault
*/
public function testTemplateCreatedCorrectly(): void
{
$fixture = new Template('myTemplate', new String_(), new Mixed_(), new Description(''));
$this->assertSame('template', $fixture->getName());
$this->assertSame('myTemplate', $fixture->getTemplateName());
$this->assertEquals(new String_(), $fixture->getBound());
$this->assertEquals(new Mixed_(), $fixture->getDefault());
}

public function testRendersCorrectly(): void
{
$fixture = new Template('myTemplate', new String_(), null, new Description(''));
$this->assertSame('@template myTemplate of string', $fixture->render());
}
}

0 comments on commit 54e10d4

Please sign in to comment.