Passed
Push — master ( 80fed1...32ef61 )
by Peter
09:46
created

UserGroupTest::createMockEntity()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 5
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\Admin\Form\Factory;
6
7
use AbterPhp\Admin\Domain\Entities\AdminResource;
8
use AbterPhp\Admin\Domain\Entities\UserGroup as Entity;
9
use AbterPhp\Admin\Orm\AdminResourceRepo;
10
use AbterPhp\Framework\I18n\ITranslator;
11
use Opulence\Http\Requests\RequestMethods;
12
use Opulence\Orm\IEntity;
13
use Opulence\Sessions\ISession;
14
use Opulence\Sessions\Session;
15
use PHPUnit\Framework\MockObject\MockObject;
16
use PHPUnit\Framework\TestCase;
17
18
class UserGroupTest extends TestCase
19
{
20
    /** @var UserGroup - System Under Test */
21
    protected $sut;
22
23
    /** @var ISession|MockObject */
24
    protected $sessionMock;
25
26
    /** @var ITranslator|MockObject */
27
    protected $translatorMock;
28
29
    /** @var AdminResourceRepo|MockObject */
30
    protected $adminResourceRepoMock;
31
32
    public function setUp(): void
33
    {
34
        $this->sessionMock = $this->createMock(Session::class);
35
        $this->sessionMock->expects($this->any())->method('get')->willReturnArgument(0);
36
37
        $this->translatorMock = $this->createMock(ITranslator::class);
38
        $this->translatorMock->expects($this->any())->method('translate')->willReturnArgument(0);
39
40
        $this->adminResourceRepoMock = $this->createMock(AdminResourceRepo::class);
41
42
        $this->sut = new UserGroup($this->sessionMock, $this->translatorMock, $this->adminResourceRepoMock);
43
    }
44
45
    public function testCreate()
46
    {
47
        $action            = 'foo';
48
        $method            = RequestMethods::POST;
49
        $showUrl           = 'bar';
50
        $entityId          = '26f69be3-fa57-4ad1-8c58-5f4631040ece';
51
        $identifier        = 'blah';
52
        $name              = 'zorros';
53
        $allAdminResources = [
54
            new AdminResource('8a42e773-975d-41bd-9061-57ee6c381e68', 'ar-21'),
55
            new AdminResource('5180d59e-3b79-4c3b-8877-7df8086a8879', 'ar-47'),
56
            new AdminResource('08e82847-9342-42ae-8563-ef2bae335c7a', 'ar-64'),
57
            new AdminResource('c2d3f41c-15ba-4664-8393-8024bf650d21', 'ar-187'),
58
        ];
59
        $adminResources    = [$allAdminResources[1], $allAdminResources[3]];
60
61
        $this->adminResourceRepoMock
62
            ->expects($this->any())
63
            ->method('getAll')
64
            ->willReturn($allAdminResources);
65
66
        $entityStub = new Entity($entityId, $identifier, $name, $adminResources);
67
68
        $form = (string)$this->sut->create($action, $method, $showUrl, $entityStub);
69
70
        $this->assertStringContainsString($action, $form);
71
        $this->assertStringContainsString($showUrl, $form);
72
        $this->assertStringContainsString('CSRF', $form);
73
        $this->assertStringContainsString('POST', $form);
74
        $this->assertStringContainsString('identifier', $form);
75
        $this->assertStringContainsString('name', $form);
76
        $this->assertStringContainsString('admin_resource_ids', $form);
77
        $this->assertStringContainsString('selected', $form);
78
        $this->assertStringContainsString('button', $form);
79
    }
80
81
    public function testCreateThrowsExceptionIfWrongEntityIsProvided()
82
    {
83
        $this->expectException(\InvalidArgumentException::class);
84
85
        $entityStub = $this->createMock(IEntity::class);
86
87
        $this->sut->create('foo', 'bar', '/baz', $entityStub);
88
    }
89
90
    /**
91
     * @return MockObject|Entity
92
     */
93
    protected function createMockEntity()
94
    {
95
        $entityMock = $this->createMock(Entity::class);
96
97
        return $entityMock;
98
    }
99
}
100