ContentListRepoTest::setUp()   A
last analyzed

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
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 5
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\Website\Orm;
6
7
use AbterPhp\Admin\TestCase\Orm\RepoTestCase;
8
use AbterPhp\Website\Domain\Entities\ContentList as Entity;
9
use AbterPhp\Website\Orm\DataMappers\ContentListSqlDataMapper as DataMapper;
10
use AbterPhp\Website\Orm\ContentListRepo as Repo;
11
use Opulence\Orm\DataMappers\IDataMapper;
12
use Opulence\Orm\IEntityRegistry;
13
use PHPUnit\Framework\MockObject\MockObject;
14
15
class ContentListRepoTest extends RepoTestCase
16
{
17
    /** @var Repo - System Under Test */
18
    protected $sut;
19
20
    /** @var DataMapper|MockObject */
21
    protected $dataMapperMock;
22
23
    public function setUp(): void
24
    {
25
        parent::setUp();
26
27
        $this->sut = new Repo($this->className, $this->dataMapperMock, $this->unitOfWorkMock);
28
    }
29
30
    /**
31
     * @return DataMapper|MockObject
32
     */
33
    protected function createDataMapperMock(): IDataMapper
34
    {
35
        /** @var DataMapper|MockObject $mock */
36
        $mock = $this->createMock(DataMapper::class);
37
38
        return $mock;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $mock returns the type PHPUnit\Framework\MockObject\MockObject which is incompatible with the type-hinted return Opulence\Orm\DataMappers\IDataMapper.
Loading history...
39
    }
40
41
    public function testGetAll()
42
    {
43
        $entityStub0 = new Entity('foo0', 'foo-0', '', '', false, false, false, false, false, false);
44
        $entityStub1 = new Entity('foo1', 'foo-1', '', '', false, false, false, false, false, false);
45
        $entities    = [$entityStub0, $entityStub1];
46
47
        $entityRegistry = $this->createEntityRegistryStub(null);
48
49
        $this->dataMapperMock->expects($this->once())->method('getAll')->willReturn($entities);
50
51
        $this->unitOfWorkMock->expects($this->any())->method('getEntityRegistry')->willReturn($entityRegistry);
52
53
        $actualResult = $this->sut->getAll();
54
55
        $this->assertSame($entities, $actualResult);
56
    }
57
58
    public function testGetByIdFromCache()
59
    {
60
        $entityStub = new Entity('foo0', 'foo-0', '', '', false, false, false, false, false, false);
61
62
        $entityRegistry = $this->createEntityRegistryStub($entityStub);
63
64
        $this->unitOfWorkMock->expects($this->any())->method('getEntityRegistry')->willReturn($entityRegistry);
65
66
        $this->dataMapperMock->expects($this->never())->method('getById');
67
68
        $id = 'foo';
69
70
        $actualResult = $this->sut->getById($id);
71
72
        $this->assertSame($entityStub, $actualResult);
73
    }
74
75
    public function testGetByIdFromDataMapper()
76
    {
77
        $entityStub = new Entity('foo0', 'foo-0', '', '', false, false, false, false, false, false);
78
79
        $entityRegistry = $this->createEntityRegistryStub(null);
80
81
        $this->unitOfWorkMock->expects($this->any())->method('getEntityRegistry')->willReturn($entityRegistry);
82
83
        $this->dataMapperMock->expects($this->once())->method('getById')->willReturn($entityStub);
84
85
        $id = 'foo';
86
87
        $actualResult = $this->sut->getById($id);
88
89
        $this->assertSame($entityStub, $actualResult);
90
    }
91
92
    public function testAdd()
93
    {
94
        $entityStub = new Entity('foo0', 'foo-0', '', '', false, false, false, false, false, false);
95
96
        $this->unitOfWorkMock->expects($this->once())->method('scheduleForInsertion')->with($entityStub);
97
98
        $this->sut->add($entityStub);
99
    }
100
101
    public function testDelete()
102
    {
103
        $entityStub = new Entity('foo0', 'foo-0', '', '', false, false, false, false, false, false);
104
105
        $this->unitOfWorkMock->expects($this->once())->method('scheduleForDeletion')->with($entityStub);
106
107
        $this->sut->delete($entityStub);
108
    }
109
110
    public function testGetPage()
111
    {
112
        $entityStub0 = new Entity('foo0', 'foo-0', '', '', false, false, false, false, false, false);
113
        $entityStub1 = new Entity('foo1', 'foo-1', '', '', false, false, false, false, false, false);
114
        $entities    = [$entityStub0, $entityStub1];
115
116
        $entityRegistry = $this->createEntityRegistryStub(null);
117
118
        $this->dataMapperMock->expects($this->once())->method('getPage')->willReturn($entities);
119
120
        $this->unitOfWorkMock->expects($this->any())->method('getEntityRegistry')->willReturn($entityRegistry);
121
122
        $actualResult = $this->sut->getPage(0, 10, [], [], []);
123
124
        $this->assertSame($entities, $actualResult);
125
    }
126
127
    public function testGetIdentifier()
128
    {
129
        $identifier = 'foo-0';
130
131
        $entityStub0 = new Entity('foo0', 'foo-0', '', '', false, false, false, false, false, false);
132
133
        $entityRegistry = $this->createEntityRegistryStub(null);
134
135
        $this->dataMapperMock->expects($this->once())->method('getByIdentifier')->willReturn($entityStub0);
136
137
        $this->unitOfWorkMock->expects($this->any())->method('getEntityRegistry')->willReturn($entityRegistry);
138
139
        $actualResult = $this->sut->getByIdentifier($identifier);
140
141
        $this->assertSame($entityStub0, $actualResult);
142
    }
143
144
    public function testGetWithLayoutByIdentifiers()
145
    {
146
        $identifier0 = 'foo-0';
147
        $identifier1 = 'foo-1';
148
149
        $entityStub0 = new Entity('foo0', $identifier0, '', '', false, false, false, false, false, false);
150
        $entityStub1 = new Entity('foo1', $identifier1, '', '', false, false, false, false, false, false);
151
        $entities    = [$entityStub0, $entityStub1];
152
153
        $entityRegistry = $this->createEntityRegistryStub(null);
154
155
        $this->dataMapperMock->expects($this->once())->method('getByIdentifiers')->willReturn($entities);
156
157
        $this->unitOfWorkMock->expects($this->any())->method('getEntityRegistry')->willReturn($entityRegistry);
158
159
        $actualResult = $this->sut->getByIdentifiers([$identifier0, $identifier1]);
160
161
        $this->assertSame($entities, $actualResult);
162
    }
163
164
    /**
165
     * @param Entity|null $entity
166
     *
167
     * @return MockObject
168
     */
169
    protected function createEntityRegistryStub(?Entity $entity): MockObject
170
    {
171
        $entityRegistry = $this->createMock(IEntityRegistry::class);
172
        $entityRegistry->expects($this->any())->method('registerEntity');
173
        $entityRegistry->expects($this->any())->method('getEntity')->willReturn($entity);
174
175
        return $entityRegistry;
176
    }
177
}
178