Completed
Pull Request — 1.2 (#12)
by David
04:51
created

FileBasedRendererTest.php$0 ➔ get()   A

Complexity

Conditions 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
1
<?php
2
namespace Mouf\Html\Renderer;
3
4
use Cache\Adapter\Void\VoidCachePool;
5
use Mouf\Html\Renderer\Fixtures\ExtendedFoo;
6
use Mouf\Html\Renderer\Fixtures\Foo;
7
use Mouf\Html\Renderer\Fixtures\MyImplementation;
8
use PHPUnit\Framework\TestCase;
9
use Psr\Container\ContainerExceptionInterface;
10
use Interop\Container\ContainerInterface;
11
use Psr\Container\NotFoundExceptionInterface;
12
use Symfony\Component\Cache\Simple\ArrayCache;
13
14
class FileBasedRendererTest extends TestCase
15
{
16
    public function testFind()
17
    {
18
        $renderer = new FileBasedRenderer(
19
            'tests/templates',
20
            new ArrayCache(),
21
            new class implements ContainerInterface {
22
                public function get($id)
23
                {
24
                    return '';
25
                }
26
                public function has($id)
27
                {
28
                    return true;
29
                }
30
            }
31
        );
32
33
        $canRender = $renderer->canRender(new Foo());
34
        $this->assertSame(ChainableRendererInterface::CAN_RENDER_CLASS, $canRender);
35
        $debugCanRender = $renderer->debugCanRender(new Foo());
36
        $this->assertSame('Testing renderer for directory \'tests/templates\'
37
  Found file: tests/templates/Mouf/Html/Renderer/Fixtures/Foo.twig
38
', $debugCanRender);
39
40
        // Restart for cache testing
41
        $canRender = $renderer->canRender(new Foo());
42
        $this->assertSame(ChainableRendererInterface::CAN_RENDER_CLASS, $canRender);
43
44
        // Can use subclass for rendering?
45
        $canRender = $renderer->canRender(new ExtendedFoo());
46
        $this->assertSame(ChainableRendererInterface::CAN_RENDER_CLASS, $canRender);
47
48
        // Can use interface for rendering?
49
        $canRender = $renderer->canRender(new MyImplementation());
50
        $this->assertSame(ChainableRendererInterface::CAN_RENDER_CLASS, $canRender);
51
        $debugCanRender = $renderer->debugCanRender(new MyImplementation());
52
        $this->assertSame('Testing renderer for directory \'tests/templates\'
53
  Tested file: tests/templates/Mouf/Html/Renderer/Fixtures/MyImplementation.twig
54
  Tested file: tests/templates/Mouf/Html/Renderer/Fixtures/MyImplementation.php
55
  Tested file: tests/templates/Mouf/Html/Renderer/Fixtures/MyInterface.twig
56
  Found file: tests/templates/Mouf/Html/Renderer/Fixtures/MyInterface.php
57
', $debugCanRender);
58
59
        $debugCanRender = $renderer->debugCanRender(new MyImplementation(), 'context');
60
        $this->assertSame('Testing renderer for directory \'tests/templates\'
61
  Tested file: tests/templates/Mouf/Html/Renderer/Fixtures/MyImplementation__context.twig
62
  Tested file: tests/templates/Mouf/Html/Renderer/Fixtures/MyImplementation__context.php
63
  Tested file: tests/templates/Mouf/Html/Renderer/Fixtures/MyImplementation.twig
64
  Tested file: tests/templates/Mouf/Html/Renderer/Fixtures/MyImplementation.php
65
  Tested file: tests/templates/Mouf/Html/Renderer/Fixtures/MyInterface__context.twig
66
  Found file: tests/templates/Mouf/Html/Renderer/Fixtures/MyInterface__context.php
67
', $debugCanRender);
68
69
70
        $debugCanRender = $renderer->debugCanRender(new Foo(), 'context');
71
        $this->assertSame('Testing renderer for directory \'tests/templates\'
72
  Found file: tests/templates/Mouf/Html/Renderer/Fixtures/Foo__context.twig
73
', $debugCanRender);
74
75
76
        $canRender = $renderer->canRender(new \stdClass());
77
        $this->assertSame(ChainableRendererInterface::CANNOT_RENDER, $canRender);
78
        ob_start();
79
        $renderer->render(new Foo());
80
        $html = ob_get_clean();
81
        $this->assertSame('Foo', $html);
82
83
        ob_start();
84
        $renderer->render(new Foo(), 'context');
85
        $html = ob_get_clean();
86
        $this->assertSame('Foocontext', $html);
87
88
        ob_start();
89
        $renderer->render(new MyImplementation());
90
        $html = ob_get_clean();
91
        $this->assertSame('bar', $html);
92
93
94
        $this->expectException(NoTemplateFoundException::class);
95
        $renderer->render(new \stdClass());
96
    }
97
}
98