mirror of
https://github.com/barryvdh/ReflectionDocBlock.git
synced 2026-08-18 01:57:13 +00:00
The array of tags in the docblock constructor should only contain tags. Some of the factory methods of the tags are returning a null when the tag could not be created. This causes issues during parsing. By filtering these null values in the factory this use is resolved.
253 lines
6.7 KiB
PHP
253 lines
6.7 KiB
PHP
<?php
|
|
/**
|
|
* This file is part of phpDocumentor.
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*
|
|
* @copyright 2010-2015 Mike van Riel<[email protected]>
|
|
* @license http://www.opensource.org/licenses/mit-license.php MIT
|
|
* @link http://phpdoc.org
|
|
*/
|
|
|
|
namespace phpDocumentor\Reflection;
|
|
|
|
use Mockery as m;
|
|
use phpDocumentor\Reflection\Types\Context;
|
|
|
|
/**
|
|
* @coversDefaultClass phpDocumentor\Reflection\DocBlock
|
|
* @covers ::<private>
|
|
* @uses \Webmozart\Assert\Assert
|
|
*/
|
|
class DocBlockTest extends \PHPUnit_Framework_TestCase
|
|
{
|
|
/**
|
|
* @covers ::__construct
|
|
* @covers ::getSummary
|
|
*
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Description
|
|
*/
|
|
public function testDocBlockCanHaveASummary()
|
|
{
|
|
$summary = 'This is a summary';
|
|
|
|
$fixture = new DocBlock($summary);
|
|
|
|
$this->assertSame($summary, $fixture->getSummary());
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
*
|
|
* @expectedException \InvalidArgumentException
|
|
*/
|
|
public function testExceptionIsThrownIfSummaryIsNotAString()
|
|
{
|
|
new DocBlock([]);
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
*
|
|
* @expectedException \InvalidArgumentException
|
|
*/
|
|
public function testExceptionIsThrownIfTemplateStartIsNotABoolean()
|
|
{
|
|
new DocBlock('', null, [], null, null, ['is not boolean']);
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
*
|
|
* @expectedException \InvalidArgumentException
|
|
*/
|
|
public function testExceptionIsThrownIfTemplateEndIsNotABoolean()
|
|
{
|
|
new DocBlock('', null, [], null, null, false, ['is not boolean']);
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
* @covers ::getDescription
|
|
*
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Description
|
|
*/
|
|
public function testDocBlockCanHaveADescription()
|
|
{
|
|
$description = new DocBlock\Description('');
|
|
|
|
$fixture = new DocBlock('', $description);
|
|
|
|
$this->assertSame($description, $fixture->getDescription());
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
* @covers ::getTags
|
|
*
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Description
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Tag
|
|
*/
|
|
public function testDocBlockCanHaveTags()
|
|
{
|
|
$tags = [
|
|
m::mock(DocBlock\Tag::class)
|
|
];
|
|
|
|
$fixture = new DocBlock('', null, $tags);
|
|
|
|
$this->assertSame($tags, $fixture->getTags());
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
* @covers ::getTags
|
|
*
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Description
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Tag
|
|
*
|
|
* @expectedException \InvalidArgumentException
|
|
*/
|
|
public function testDocBlockAllowsOnlyTags()
|
|
{
|
|
$tags = [
|
|
null
|
|
];
|
|
|
|
$fixture = new DocBlock('', null, $tags);
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
* @covers ::getTagsByName
|
|
*
|
|
* @uses \phpDocumentor\Reflection\DocBlock::getTags
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Description
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Tag
|
|
*/
|
|
public function testFindTagsInDocBlockByName()
|
|
{
|
|
$tag1 = m::mock(DocBlock\Tag::class);
|
|
$tag2 = m::mock(DocBlock\Tag::class);
|
|
$tag3 = m::mock(DocBlock\Tag::class);
|
|
$tags = [$tag1, $tag2, $tag3];
|
|
|
|
$tag1->shouldReceive('getName')->andReturn('abc');
|
|
$tag2->shouldReceive('getName')->andReturn('abcd');
|
|
$tag3->shouldReceive('getName')->andReturn('ab');
|
|
|
|
$fixture = new DocBlock('', null, $tags);
|
|
|
|
$this->assertSame([$tag2], $fixture->getTagsByName('abcd'));
|
|
$this->assertSame([], $fixture->getTagsByName('Ebcd'));
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
* @covers ::getTagsByName
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Description
|
|
* @expectedException \InvalidArgumentException
|
|
*/
|
|
public function testExceptionIsThrownIfNameForTagsIsNotString()
|
|
{
|
|
$fixture = new DocBlock();
|
|
$fixture->getTagsByName([]);
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
* @covers ::hasTag
|
|
*
|
|
* @uses \phpDocumentor\Reflection\DocBlock::getTags
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Description
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Tag
|
|
*/
|
|
public function testCheckIfThereAreTagsWithAGivenName()
|
|
{
|
|
$tag1 = m::mock(DocBlock\Tag::class);
|
|
$tag2 = m::mock(DocBlock\Tag::class);
|
|
$tag3 = m::mock(DocBlock\Tag::class);
|
|
$tags = [$tag1, $tag2, $tag3];
|
|
|
|
$tag1->shouldReceive('getName')->twice()->andReturn('abc');
|
|
$tag2->shouldReceive('getName')->twice()->andReturn('abcd');
|
|
$tag3->shouldReceive('getName')->once();
|
|
|
|
$fixture = new DocBlock('', null, $tags);
|
|
|
|
$this->assertTrue($fixture->hasTag('abcd'));
|
|
$this->assertFalse($fixture->hasTag('Ebcd'));
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
* @covers ::hasTag
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Description
|
|
* @expectedException \InvalidArgumentException
|
|
*/
|
|
public function testExceptionIsThrownIfNameForCheckingTagsIsNotString()
|
|
{
|
|
$fixture = new DocBlock();
|
|
$fixture->hasTag([]);
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
* @covers ::getContext
|
|
*
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Description
|
|
* @uses \phpDocumentor\Reflection\Types\Context
|
|
*/
|
|
public function testDocBlockKnowsInWhichNamespaceItIsAndWhichAliasesThereAre()
|
|
{
|
|
$context = new Context('');
|
|
|
|
$fixture = new DocBlock('', null, [], $context);
|
|
|
|
$this->assertSame($context, $fixture->getContext());
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
* @covers ::getLocation
|
|
*
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Description
|
|
* @uses \phpDocumentor\Reflection\Location
|
|
*/
|
|
public function testDocBlockKnowsAtWhichLineItIs()
|
|
{
|
|
$location = new Location(10);
|
|
|
|
$fixture = new DocBlock('', null, [], null, $location);
|
|
|
|
$this->assertSame($location, $fixture->getLocation());
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
* @covers ::isTemplateStart
|
|
*
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Description
|
|
*/
|
|
public function testDocBlockKnowsIfItIsTheStartOfADocBlockTemplate()
|
|
{
|
|
$fixture = new DocBlock('', null, [], null, null, true);
|
|
|
|
$this->assertTrue($fixture->isTemplateStart());
|
|
}
|
|
|
|
/**
|
|
* @covers ::__construct
|
|
* @covers ::isTemplateEnd
|
|
*
|
|
* @uses \phpDocumentor\Reflection\DocBlock\Description
|
|
*/
|
|
public function testDocBlockKnowsIfItIsTheEndOfADocBlockTemplate()
|
|
{
|
|
$fixture = new DocBlock('', null, [], null, null, false, true);
|
|
|
|
$this->assertTrue($fixture->isTemplateEnd());
|
|
}
|
|
}
|