Completed
Push — 2.0 ( 1bba9f...1e5061 )
by David
9s
created

FileBasedRendererTest::testFind()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 72

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 72
rs 8.6109
c 0
b 0
f 0
cc 1
nc 1
nop 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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 Interop\Container\ContainerInterface;
10
use Simplex\Container;
11
use Symfony\Component\Cache\Simple\ArrayCache;
12
13
class FileBasedRendererTest extends TestCase
14
{
15
    public function testFind()
16
    {
17
        $renderer = new FileBasedRenderer(
18
            'tests/templates',
19
            new ArrayCache(),
20
            new Container()
21
        );
22
23
        $canRender = $renderer->canRender(new Foo());
24
        $this->assertSame(ChainableRendererInterface::CAN_RENDER_CLASS, $canRender);
25
        $debugCanRender = $renderer->debugCanRender(new Foo());
26
        $this->assertSame('Testing renderer for directory \'tests/templates\'
27
  Found file: tests/templates/Mouf/Html/Renderer/Fixtures/Foo.twig
28
', $debugCanRender);
29
30
        // Restart for cache testing
31
        $canRender = $renderer->canRender(new Foo());
32
        $this->assertSame(ChainableRendererInterface::CAN_RENDER_CLASS, $canRender);
33
34
        // Can use subclass for rendering?
35
        $canRender = $renderer->canRender(new ExtendedFoo());
36
        $this->assertSame(ChainableRendererInterface::CAN_RENDER_CLASS, $canRender);
37
38
        // Can use interface for rendering?
39
        $canRender = $renderer->canRender(new MyImplementation());
40
        $this->assertSame(ChainableRendererInterface::CAN_RENDER_CLASS, $canRender);
41
        $debugCanRender = $renderer->debugCanRender(new MyImplementation());
42
        $this->assertSame('Testing renderer for directory \'tests/templates\'
43
  Tested file: tests/templates/Mouf/Html/Renderer/Fixtures/MyImplementation.twig
44
  Tested file: tests/templates/Mouf/Html/Renderer/Fixtures/MyImplementation.php
45
  Tested file: tests/templates/Mouf/Html/Renderer/Fixtures/MyInterface.twig
46
  Found file: tests/templates/Mouf/Html/Renderer/Fixtures/MyInterface.php
47
', $debugCanRender);
48
49
        $debugCanRender = $renderer->debugCanRender(new MyImplementation(), 'context');
50
        $this->assertSame('Testing renderer for directory \'tests/templates\'
51
  Tested file: tests/templates/Mouf/Html/Renderer/Fixtures/MyImplementation__context.twig
52
  Tested file: tests/templates/Mouf/Html/Renderer/Fixtures/MyImplementation__context.php
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__context.twig
56
  Found file: tests/templates/Mouf/Html/Renderer/Fixtures/MyInterface__context.php
57
', $debugCanRender);
58
59
60
        $debugCanRender = $renderer->debugCanRender(new Foo(), 'context');
61
        $this->assertSame('Testing renderer for directory \'tests/templates\'
62
  Found file: tests/templates/Mouf/Html/Renderer/Fixtures/Foo__context.twig
63
', $debugCanRender);
64
65
66
        $canRender = $renderer->canRender(new \stdClass());
67
        $this->assertSame(ChainableRendererInterface::CANNOT_RENDER, $canRender);
68
        ob_start();
69
        $renderer->render(new Foo());
70
        $html = ob_get_clean();
71
        $this->assertSame('Foo', $html);
72
73
        ob_start();
74
        $renderer->render(new Foo(), 'context');
75
        $html = ob_get_clean();
76
        $this->assertSame('Foocontext', $html);
77
78
        ob_start();
79
        $renderer->render(new MyImplementation());
80
        $html = ob_get_clean();
81
        $this->assertSame('bar', $html);
82
83
84
        $this->expectException(NoTemplateFoundException::class);
85
        $renderer->render(new \stdClass());
86
    }
87
}
88