TemplateInitializerTest   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 25
c 1
b 0
f 0
dl 0
loc 46
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 10 1
A testHandle() 0 19 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\Website\Events\Listeners;
6
7
use AbterPhp\Framework\Events\TemplateEngineReady;
8
use AbterPhp\Framework\Template\Engine;
9
use AbterPhp\Framework\Template\Renderer;
10
use AbterPhp\Website\Template\Loader\Block as BlockLoader;
11
use AbterPhp\Website\Template\Loader\ContentList as ContentListLoader;
12
use AbterPhp\Website\Template\Loader\PageCategory as PageCategoryLoader;
13
use PHPUnit\Framework\MockObject\MockObject;
14
use PHPUnit\Framework\TestCase;
15
16
class TemplateInitializerTest extends TestCase
17
{
18
    /** @var TemplateInitializer - System Under Test */
19
    protected $sut;
20
21
    /** @var BlockLoader|MockObject */
22
    protected $blockLoaderMock;
23
24
    /** @var PageCategoryLoader|MockObject */
25
    protected $pageCategoryLoaderMock;
26
27
    /** @var ContentListLoader|MockObject */
28
    protected $contentListLoader;
29
30
    public function setUp(): void
31
    {
32
        $this->blockLoaderMock        = $this->createMock(BlockLoader::class);
33
        $this->pageCategoryLoaderMock = $this->createMock(PageCategoryLoader::class);
34
        $this->contentListLoader      = $this->createMock(ContentListLoader::class);
35
36
        $this->sut = new TemplateInitializer(
37
            $this->blockLoaderMock,
38
            $this->pageCategoryLoaderMock,
39
            $this->contentListLoader
40
        );
41
    }
42
43
    public function testHandle()
44
    {
45
        $rendererMock = $this->createMock(Renderer::class);
46
        $rendererMock
47
            ->expects($this->exactly(3))
48
            ->method('addLoader')
49
            ->withConsecutive(
50
                [TemplateInitializer::TEMPLATE_TYPE_BLOCK, $this->blockLoaderMock],
51
                [TemplateInitializer::TEMPLATE_TYPE_PAGE_CATEGORY, $this->pageCategoryLoaderMock],
52
                [TemplateInitializer::TEMPLATE_TYPE_LIST, $this->contentListLoader],
53
            )
54
            ->willReturnSelf();
55
56
        $engineMock = $this->createMock(Engine::class);
57
        $engineMock->expects($this->atLeastOnce())->method('getRenderer')->willReturn($rendererMock);
58
59
        $event = new TemplateEngineReady($engineMock);
60
61
        $this->sut->handle($event);
62
    }
63
}
64