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

96 lines
2.5 KiB
PHP

<?php
declare(strict_types=1);
namespace Doctrine\Tests\RST\Builder;
use Doctrine\RST\Builder\Documents;
use Doctrine\RST\Meta\MetaEntry;
use Doctrine\RST\Meta\Metas;
use Doctrine\RST\Nodes\DocumentNode;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Filesystem\Filesystem;
class DocumentsTest extends TestCase
{
/** @var Filesystem|MockObject */
private $filesystem;
/** @var Metas|MockObject */
private $metas;
/** @var Documents */
private $documents;
public function testGetAll(): void
{
$document1 = $this->createMock(DocumentNode::class);
$document2 = $this->createMock(DocumentNode::class);
$this->documents->addDocument('document1', $document1);
$this->documents->addDocument('document2', $document2);
$expected = [
'document1' => $document1,
'document2' => $document2,
];
self::assertSame($expected, $this->documents->getAll());
}
public function testHasDocument(): void
{
self::assertFalse($this->documents->hasDocument('document'));
$document = $this->createMock(DocumentNode::class);
$this->documents->addDocument('document', $document);
self::assertTrue($this->documents->hasDocument('document'));
}
public function testRender(): void
{
$document = $this->createMock(DocumentNode::class);
$this->documents->addDocument('document', $document);
$metaEntry = $this->createMock(MetaEntry::class);
$this->metas->expects(self::once())
->method('get')
->with('document')
->willReturn($metaEntry);
$metaEntry->expects(self::once())
->method('getUrl')
->willReturn('url');
$this->filesystem->expects(self::once())
->method('mkdir')
->with('/target', 0755);
$document->expects(self::once())
->method('renderDocument')
->willReturn('rendered document');
$this->filesystem->expects(self::once())
->method('dumpFile')
->with('/target/url', 'rendered document');
$this->documents->render('/target');
}
protected function setUp(): void
{
$this->filesystem = $this->createMock(Filesystem::class);
$this->metas = $this->createMock(Metas::class);
$this->documents = new Documents(
$this->filesystem,
$this->metas
);
}
}