update v 1.0.7.5
This commit is contained in:
290
vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockFactoryTest.php
vendored
Normal file
290
vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockFactoryTest.php
vendored
Normal file
@@ -0,0 +1,290 @@
|
||||
<?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<mike@phpdoc.org>
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT
|
||||
* @link http://phpdoc.org
|
||||
*/
|
||||
|
||||
namespace phpDocumentor\Reflection;
|
||||
|
||||
use Mockery as m;
|
||||
use phpDocumentor\Reflection\DocBlock\Description;
|
||||
use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
|
||||
use phpDocumentor\Reflection\DocBlock\Tag;
|
||||
use phpDocumentor\Reflection\DocBlock\TagFactory;
|
||||
use phpDocumentor\Reflection\DocBlock\Tags\Param;
|
||||
use phpDocumentor\Reflection\Types\Context;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass phpDocumentor\Reflection\DocBlockFactory
|
||||
* @covers ::<private>
|
||||
* @uses \Webmozart\Assert\Assert
|
||||
* @uses phpDocumentor\Reflection\DocBlock
|
||||
*/
|
||||
class DocBlockFactoryTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* @covers ::__construct
|
||||
* @covers ::createInstance
|
||||
* @uses \phpDocumentor\Reflection\DocBlock\StandardTagFactory
|
||||
* @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory
|
||||
*/
|
||||
public function testCreateFactoryUsingFactoryMethod()
|
||||
{
|
||||
$fixture = DocBlockFactory::createInstance();
|
||||
|
||||
$this->assertInstanceOf(DocBlockFactory::class, $fixture);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::__construct
|
||||
* @covers ::create
|
||||
* @uses phpDocumentor\Reflection\DocBlock\Description
|
||||
*/
|
||||
public function testCreateDocBlockFromReflection()
|
||||
{
|
||||
$fixture = new DocBlockFactory(m::mock(DescriptionFactory::class), m::mock(TagFactory::class));
|
||||
|
||||
$docBlock = '/** This is a DocBlock */';
|
||||
$classReflector = m::mock(\ReflectionClass::class);
|
||||
$classReflector->shouldReceive('getDocComment')->andReturn($docBlock);
|
||||
$docblock = $fixture->create($classReflector);
|
||||
|
||||
$this->assertInstanceOf(DocBlock::class, $docblock);
|
||||
$this->assertSame('This is a DocBlock', $docblock->getSummary());
|
||||
$this->assertEquals(new Description(''), $docblock->getDescription());
|
||||
$this->assertSame([], $docblock->getTags());
|
||||
$this->assertEquals(new Context(''), $docblock->getContext());
|
||||
$this->assertNull($docblock->getLocation());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::__construct
|
||||
* @covers ::create
|
||||
* @uses phpDocumentor\Reflection\DocBlock\Description
|
||||
*/
|
||||
public function testCreateDocBlockFromStringWithDocComment()
|
||||
{
|
||||
$fixture = new DocBlockFactory(m::mock(DescriptionFactory::class), m::mock(TagFactory::class));
|
||||
|
||||
$docblock = $fixture->create('/** This is a DocBlock */');
|
||||
|
||||
$this->assertInstanceOf(DocBlock::class, $docblock);
|
||||
$this->assertSame('This is a DocBlock', $docblock->getSummary());
|
||||
$this->assertEquals(new Description(''), $docblock->getDescription());
|
||||
$this->assertSame([], $docblock->getTags());
|
||||
$this->assertEquals(new Context(''), $docblock->getContext());
|
||||
$this->assertNull($docblock->getLocation());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::create
|
||||
* @covers ::__construct
|
||||
* @uses phpDocumentor\Reflection\DocBlock\Description
|
||||
*/
|
||||
public function testCreateDocBlockFromStringWithoutDocComment()
|
||||
{
|
||||
$fixture = new DocBlockFactory(m::mock(DescriptionFactory::class), m::mock(TagFactory::class));
|
||||
|
||||
$docblock = $fixture->create('This is a DocBlock');
|
||||
|
||||
$this->assertInstanceOf(DocBlock::class, $docblock);
|
||||
$this->assertSame('This is a DocBlock', $docblock->getSummary());
|
||||
$this->assertEquals(new Description(''), $docblock->getDescription());
|
||||
$this->assertSame([], $docblock->getTags());
|
||||
$this->assertEquals(new Context(''), $docblock->getContext());
|
||||
$this->assertNull($docblock->getLocation());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::__construct
|
||||
* @covers ::create
|
||||
* @uses phpDocumentor\Reflection\DocBlock\DescriptionFactory
|
||||
* @uses phpDocumentor\Reflection\DocBlock\Description
|
||||
* @dataProvider provideSummaryAndDescriptions
|
||||
*/
|
||||
public function testSummaryAndDescriptionAreSeparated($given, $summary, $description)
|
||||
{
|
||||
$tagFactory = m::mock(TagFactory::class);
|
||||
$fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory);
|
||||
|
||||
$docblock = $fixture->create($given);
|
||||
|
||||
$this->assertSame($summary, $docblock->getSummary());
|
||||
$this->assertEquals(new Description($description), $docblock->getDescription());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::__construct
|
||||
* @covers ::create
|
||||
* @uses phpDocumentor\Reflection\DocBlock\DescriptionFactory
|
||||
* @uses phpDocumentor\Reflection\DocBlock\Description
|
||||
*/
|
||||
public function testDescriptionsRetainFormatting()
|
||||
{
|
||||
$tagFactory = m::mock(TagFactory::class);
|
||||
$fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory);
|
||||
|
||||
$given = <<<DOCBLOCK
|
||||
/**
|
||||
* This is a summary.
|
||||
* This is a multiline Description
|
||||
* that contains a code block.
|
||||
*
|
||||
* See here: a CodeBlock
|
||||
*/
|
||||
DOCBLOCK;
|
||||
|
||||
$description = <<<DESCRIPTION
|
||||
This is a multiline Description
|
||||
that contains a code block.
|
||||
|
||||
See here: a CodeBlock
|
||||
DESCRIPTION;
|
||||
|
||||
$docblock = $fixture->create($given);
|
||||
|
||||
$this->assertEquals(new Description($description), $docblock->getDescription());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::__construct
|
||||
* @covers ::create
|
||||
* @uses phpDocumentor\Reflection\DocBlock\DescriptionFactory
|
||||
* @uses phpDocumentor\Reflection\DocBlock\Description
|
||||
*/
|
||||
public function testTagsAreInterpretedUsingFactory()
|
||||
{
|
||||
$tagString = <<<TAG
|
||||
@author Mike van Riel <me@mikevanriel.com> This is with
|
||||
multiline description.
|
||||
TAG;
|
||||
|
||||
$tag = m::mock(Tag::class);
|
||||
$tagFactory = m::mock(TagFactory::class);
|
||||
$tagFactory->shouldReceive('create')->with($tagString, m::type(Context::class))->andReturn($tag);
|
||||
|
||||
$fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory);
|
||||
|
||||
$given = <<<DOCBLOCK
|
||||
/**
|
||||
* This is a summary.
|
||||
*
|
||||
* @author Mike van Riel <me@mikevanriel.com> This is with
|
||||
* multiline description.
|
||||
*/
|
||||
DOCBLOCK;
|
||||
|
||||
$docblock = $fixture->create($given, new Context(''));
|
||||
|
||||
$this->assertEquals([$tag], $docblock->getTags());
|
||||
}
|
||||
|
||||
public function provideSummaryAndDescriptions()
|
||||
{
|
||||
return [
|
||||
['This is a DocBlock', 'This is a DocBlock', ''],
|
||||
[
|
||||
'This is a DocBlock. This should still be summary.',
|
||||
'This is a DocBlock. This should still be summary.',
|
||||
''
|
||||
],
|
||||
[
|
||||
<<<DOCBLOCK
|
||||
This is a DocBlock.
|
||||
This should be a Description.
|
||||
DOCBLOCK
|
||||
,
|
||||
'This is a DocBlock.',
|
||||
'This should be a Description.'
|
||||
],
|
||||
[
|
||||
<<<DOCBLOCK
|
||||
This is a
|
||||
multiline Summary.
|
||||
This should be a Description.
|
||||
DOCBLOCK
|
||||
,
|
||||
"This is a\nmultiline Summary.",
|
||||
'This should be a Description.'
|
||||
],
|
||||
[
|
||||
<<<DOCBLOCK
|
||||
This is a Summary without dot but with a whiteline
|
||||
|
||||
This should be a Description.
|
||||
DOCBLOCK
|
||||
,
|
||||
'This is a Summary without dot but with a whiteline',
|
||||
'This should be a Description.'
|
||||
],
|
||||
[
|
||||
<<<DOCBLOCK
|
||||
This is a Summary with dot and with a whiteline.
|
||||
|
||||
This should be a Description.
|
||||
DOCBLOCK
|
||||
,
|
||||
'This is a Summary with dot and with a whiteline.',
|
||||
'This should be a Description.'
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::__construct
|
||||
* @covers ::create
|
||||
*
|
||||
* @uses phpDocumentor\Reflection\DocBlock\DescriptionFactory
|
||||
* @uses phpDocumentor\Reflection\DocBlock\Description
|
||||
* @uses phpDocumentor\Reflection\Types\Context
|
||||
* @uses phpDocumentor\Reflection\DocBlock\Tags\Param
|
||||
*/
|
||||
public function testTagsWithContextNamespace()
|
||||
{
|
||||
$tagFactoryMock = m::mock(TagFactory::class);
|
||||
$fixture = new DocBlockFactory(m::mock(DescriptionFactory::class), $tagFactoryMock);
|
||||
$context = new Context('MyNamespace');
|
||||
|
||||
$tagFactoryMock->shouldReceive('create')->with(m::any(), $context)->andReturn(new Param('param'));
|
||||
$docblock = $fixture->create('/** @param MyType $param */', $context);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::__construct
|
||||
* @covers ::create
|
||||
*
|
||||
* @uses phpDocumentor\Reflection\DocBlock\DescriptionFactory
|
||||
* @uses phpDocumentor\Reflection\DocBlock\Description
|
||||
*/
|
||||
public function testTagsAreFilteredForNullValues()
|
||||
{
|
||||
$tagString = <<<TAG
|
||||
@author Mike van Riel <me@mikevanriel.com> This is with
|
||||
multiline description.
|
||||
TAG;
|
||||
|
||||
$tagFactory = m::mock(TagFactory::class);
|
||||
$tagFactory->shouldReceive('create')->with($tagString, m::any())->andReturn(null);
|
||||
|
||||
$fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory);
|
||||
|
||||
$given = <<<DOCBLOCK
|
||||
/**
|
||||
* This is a summary.
|
||||
*
|
||||
* @author Mike van Riel <me@mikevanriel.com> This is with
|
||||
* multiline description.
|
||||
*/
|
||||
DOCBLOCK;
|
||||
|
||||
$docblock = $fixture->create($given, new Context(''));
|
||||
|
||||
$this->assertEquals([], $docblock->getTags());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user