Improvements to code

This commit is contained in:
Jaapio
2020-01-12 13:19:45 +01:00
parent 1b78639b8b
commit bb629f6469
4 changed files with 59 additions and 12 deletions
+1 -1
View File
@@ -229,7 +229,7 @@ final class StandardTagFactory implements TagFactory
$callable = [$handlerClassName, 'create'];
return call_user_func_array($callable, $arguments);
} catch (InvalidArgumentException $e) {
return InvalidTag::create($body, $name, $e);
return InvalidTag::create($body, $name)->withError($e);
}
}
+14 -8
View File
@@ -6,7 +6,6 @@ namespace phpDocumentor\Reflection\DocBlock\Tags;
use phpDocumentor\Reflection\DocBlock\Tag;
use Throwable;
use Webmozart\Assert\Assert;
/**
* This class represents an exception during the tag creation
@@ -26,17 +25,16 @@ final class InvalidTag implements Tag
/** @var string */
private $body;
/** @var Throwable */
/** @var Throwable|null */
private $throwable;
private function __construct(string $name, string $body, Throwable $throwable)
private function __construct(string $name, string $body)
{
$this->name = $name;
$this->body = $body;
$this->throwable = $throwable;
}
public function getException() : Throwable
public function getException() : ?Throwable
{
return $this->throwable;
}
@@ -47,13 +45,21 @@ final class InvalidTag implements Tag
}
/**
* @return self
*
* @inheritDoc
*/
public static function create(string $body, string $name = '', ?Throwable $exception = null)
public static function create(string $body, string $name = '')
{
Assert::notNull($exception);
return new self($name, $body);
}
return new self($name, $body, $exception);
public function withError(Throwable $exception) : self
{
$tag = new self($this->name, $this->body);
$tag->throwable = $exception;
return $tag;
}
public function render(?Formatter $formatter = null) : string
@@ -332,7 +332,7 @@ class StandardTagFactoryTest extends TestCase
$this->assertSame('return', $tag->getName());
}
public function testInvalidTagIsReturnedOnFailure()
public function testInvalidTagIsReturnedOnFailure() : void
{
$tagFactory = new StandardTagFactory(m::mock(FqsenResolver::class));
@@ -0,0 +1,41 @@
<?php
declare(strict_types=1);
namespace phpDocumentor\Reflection\DocBlock\Tags;
use Exception;
use PHPUnit\Framework\TestCase;
/**
* @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\InvalidTag
* @covers ::<private>
* @covers ::getName
* @covers ::render
* @covers ::getException
* @covers ::create
*/
final class InvalidTagTest extends TestCase
{
public function testCreationWithoutError() : void
{
$tag = InvalidTag::create('Body', 'name');
self::assertSame('name', $tag->getName());
self::assertSame('@name Body', $tag->render());
self::assertNull($tag->getException());
}
/**
* @covers ::withError
*/
public function testCreationWithError() : void
{
$exception = new Exception();
$tag = InvalidTag::create('Body', 'name')->withError($exception);
self::assertSame('name', $tag->getName());
self::assertSame('@name Body', $tag->render());
self::assertSame($exception, $tag->getException());
}
}