56 lines
1.7 KiB
PHP
56 lines
1.7 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace Doctrine\Tests\RST\Parser;
|
||
|
|
||
|
use Doctrine\Common\EventManager;
|
||
|
use Doctrine\RST\Directives\Directive;
|
||
|
use Doctrine\RST\Environment;
|
||
|
use Doctrine\RST\ErrorManager;
|
||
|
use Doctrine\RST\NodeFactory\NodeFactory;
|
||
|
use Doctrine\RST\Parser;
|
||
|
use Doctrine\RST\Parser\DocumentParser;
|
||
|
use Exception;
|
||
|
use PHPUnit\Framework\TestCase;
|
||
|
|
||
|
class DocumentParserTest extends TestCase
|
||
|
{
|
||
|
public function testErrorWhenDirectiveThrowsException(): void
|
||
|
{
|
||
|
$parser = $this->createMock(Parser::class);
|
||
|
$environment = $this->createMock(Environment::class);
|
||
|
$nodeFactory = $this->createMock(NodeFactory::class);
|
||
|
$eventManager = $this->createMock(EventManager::class);
|
||
|
$codeBlockDirective = $this->createMock(Directive::class);
|
||
|
$errorManager = $this->createMock(ErrorManager::class);
|
||
|
|
||
|
$docParser = new DocumentParser(
|
||
|
$parser,
|
||
|
$environment,
|
||
|
$nodeFactory,
|
||
|
$eventManager,
|
||
|
['code-block' => $codeBlockDirective],
|
||
|
true,
|
||
|
__DIR__
|
||
|
);
|
||
|
|
||
|
$codeBlockDirective->expects(self::once())
|
||
|
->method('process')
|
||
|
->willThrowException(new Exception('Invalid something something!'));
|
||
|
$codeBlockDirective->expects(self::once())
|
||
|
->method('getName')
|
||
|
->willReturn('code-block-name');
|
||
|
|
||
|
$environment->expects(self::once())
|
||
|
->method('getErrorManager')
|
||
|
->willReturn($errorManager);
|
||
|
|
||
|
$errorManager->expects(self::once())
|
||
|
->method('error')
|
||
|
->with('Error while processing "code-block-name" directive: "Invalid something something!"');
|
||
|
|
||
|
$docParser->parse('.. code-block:: php');
|
||
|
}
|
||
|
}
|