gl-website-deployer/vendor/doctrine/rst-parser/tests/FileIncluderTest.php
2024-11-19 08:02:04 +01:00

68 lines
2.0 KiB
PHP

<?php
declare(strict_types=1);
namespace Doctrine\Tests\RST;
use Doctrine\RST\Environment;
use Doctrine\RST\FileIncluder;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use RuntimeException;
use function trim;
class FileIncluderTest extends TestCase
{
/** @var Environment|MockObject */
private $environment;
public function testInclude(): void
{
$this->environment->expects(self::once())
->method('absoluteRelativePath')
->with('include.rst')
->willReturn(__DIR__ . '/Parser/files/include.rst');
$fileIncluder = new FileIncluder($this->environment, true, __DIR__ . '/Parser/files');
$contents = $fileIncluder->includeFiles('.. include:: include.rst');
self::assertSame('I was actually included', trim($contents));
}
public function testIncludeWithEmptyIncludeRoot(): void
{
$this->environment->expects(self::once())
->method('absoluteRelativePath')
->with('include.rst')
->willReturn(__DIR__ . '/Parser/files/include.rst');
$fileIncluder = new FileIncluder($this->environment, true, '');
$contents = $fileIncluder->includeFiles('.. include:: include.rst');
self::assertSame('I was actually included', trim($contents));
}
public function testShouldThrowExceptionOnInvalidFileInclude(): void
{
$this->environment->expects(self::once())
->method('absoluteRelativePath')
->with('non-existent-file.rst')
->willReturn('non-existent-file.rst');
$fileIncluder = new FileIncluder($this->environment, true, '');
$this->expectException(RuntimeException::class);
$this->expectExceptionMessage('Include ".. include:: non-existent-file.rst" does not exist or is not readable.');
$fileIncluder->includeFiles('.. include:: non-existent-file.rst');
}
protected function setUp(): void
{
$this->environment = $this->createMock(Environment::class);
}
}