33 lines
939 B
PHP
33 lines
939 B
PHP
|
|
<?php
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
namespace Phred\Tests;
|
||
|
|
|
||
|
|
use Phred\Mvc\View;
|
||
|
|
use Phred\Template\EyrieRenderer;
|
||
|
|
use PHPUnit\Framework\TestCase;
|
||
|
|
|
||
|
|
final class MvcViewTest extends TestCase
|
||
|
|
{
|
||
|
|
public function testViewTransformsDataAndRenders(): void
|
||
|
|
{
|
||
|
|
$renderer = new EyrieRenderer();
|
||
|
|
$view = new class($renderer) extends View {
|
||
|
|
protected function transformData(array $data): array
|
||
|
|
{
|
||
|
|
$data['name'] = strtoupper($data['name'] ?? '');
|
||
|
|
return $data;
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
// Set default template and render using data-first signature
|
||
|
|
$ref = new \ReflectionClass($view);
|
||
|
|
$prop = $ref->getParentClass()->getProperty('template');
|
||
|
|
$prop->setAccessible(true);
|
||
|
|
$prop->setValue($view, '<h1>Hello {{name}}</h1>');
|
||
|
|
|
||
|
|
$html = $view->render(['name' => 'world']);
|
||
|
|
$this->assertSame('<h1>Hello WORLD</h1>', $html);
|
||
|
|
}
|
||
|
|
}
|