testBuildWorksWithoutNavigation()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 4
c 1
b 0
f 0
dl 0
loc 10
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\Admin\Http\Views\Builders;
6
7
use AbterPhp\Framework\Assets\AssetManager;
8
use AbterPhp\Framework\Navigation\Navigation;
9
use Opulence\Events\Dispatchers\IEventDispatcher;
10
use Opulence\Sessions\ISession;
11
use Opulence\Views\IView;
12
use PHPUnit\Framework\MockObject\MockObject;
13
use PHPUnit\Framework\TestCase;
14
15
class AdminBuilderTest extends TestCase
16
{
17
    /** @var AdminBuilder - System Under Test */
18
    protected $sut;
19
20
    /** @var MockObject|ISession */
21
    protected $sessionMock;
22
23
    /** @var MockObject|AssetManager */
24
    protected $assetManagerMock;
25
26
    /** @var MockObject|IEventDispatcher */
27
    protected $eventDispatcherMock;
28
29
    /** @var MockObject|Navigation|null */
30
    protected $primaryNavMock;
31
32
    /** @var MockObject|Navigation|null */
33
    protected $navbarMock;
34
35
    public function setUp(): void
36
    {
37
        parent::setUp();
38
39
        $this->sessionMock         = $this->createMock(ISession::class);
40
        $this->assetManagerMock    = $this->createMock(AssetManager::class);
41
        $this->eventDispatcherMock = $this->createMock(IEventDispatcher::class);
42
43
        $this->sut = new AdminBuilder(
44
            $this->sessionMock,
45
            $this->assetManagerMock,
46
            $this->eventDispatcherMock,
47
            $this->primaryNavMock,
48
            $this->navbarMock
49
        );
50
    }
51
52
    public function testBuildWorksWithoutNavigation()
53
    {
54
        /** @var IView|MockObject $viewMock */
55
        $viewMock = $this->createMock(IView::class);
56
57
        $this->eventDispatcherMock->expects($this->atLeastOnce())->method('dispatch');
58
59
        $actualResult = $this->sut->build($viewMock);
60
61
        $this->assertSame($viewMock, $actualResult);
62
    }
63
64
    public function testBuildWorksWithNavigation()
65
    {
66
        /** @var IView|MockObject $viewMock */
67
        $viewMock = $this->createMock(IView::class);
68
69
        /** @var Navigation|MockObject $navBarStub */
70
        $navBarStub = $this->createMock(Navigation::class);
71
72
        $this->sut->setNavbar($navBarStub)->setPrimeNav($navBarStub);
73
74
        $this->eventDispatcherMock->expects($this->atLeastOnce())->method('dispatch');
75
76
        $actualResult = $this->sut->build($viewMock);
77
78
        $this->assertSame($viewMock, $actualResult);
79
    }
80
}
81