ILIAS  release_8 Revision v8.24
CollectionTest.php
Go to the documentation of this file.
1<?php
2
20
30use PHPUnit\Framework\MockObject\MockObject;
31
37{
45 public $preloader;
50 public const DUMMY_RCID = 'dummy-rcid';
51
53
54 protected function setUp(): void
55 {
56 parent::setUp();
57 $this->rcid_generator = new DummyIDGenerator(self::DUMMY_RCID);
58
59 $this->collection_builder = new CollectionBuilder(
60 $this->collection_repository,
61 $this->rcid_generator
62 );
63
64 $this->preloader = $this->getMockBuilder(RepositoryPreloader::class)
65 ->disableOriginalConstructor()
66 ->getMock();
67
68 $this->resource_builder = new ResourceBuilder(
69 $this->storage_handler_factory,
70 $this->repositories,
71 $this->locking,
72 $this->stream_access
73 );
74
75 $this->collections = new Collections(
76 $this->resource_builder,
77 $this->collection_builder,
78 $this->preloader
79 );
80 }
81
82
83 public function testCreateCollection(): void
84 {
85 $identifiation = $this->rcid_generator->getUniqueResourceCollectionIdentification();
86 $this->collection_repository->method('blank')->with($identifiation)->willReturn(
87 new ResourceCollection($identifiation, -1, '')
88 );
89
90 $id = $this->collections->id();
91
92 $this->assertInstanceOf(ResourceCollectionIdentification::class, $id);
93 $this->assertNotInstanceOf(MockObject::class, $id);
94 $this->assertEquals(self::DUMMY_RCID, $id->serialize());
95 }
96
97 public function testGetCollectionOfUser(): void
98 {
99 $identifiation = $this->rcid_generator->getUniqueResourceCollectionIdentification();
100 $this->collection_repository->method('blank')->with($identifiation)->willReturn(
101 new ResourceCollection($identifiation, 42, '')
102 );
103
104 $id = $this->collections->id($identifiation->serialize());
105
106 $this->collection_repository->method('getResourceIdStrings')->with($identifiation)->willReturn(
107 $this->arrayAsGenerator([])
108 );
109
110 $collection = $this->collections->get($id, 42);
111
112 $this->assertInstanceOf(ResourceCollection::class, $collection);
113 $this->assertNotInstanceOf(MockObject::class, $collection);
114 $this->assertEquals(self::DUMMY_RCID, $collection->getIdentification()->serialize());
115 $this->assertEquals([], $collection->getResourceIdentifications());
116 }
117
118 public function testGetCollectionOfWrongUser(): void
119 {
120 $identifiation = new ResourceCollectionIdentification(self::DUMMY_RCID);
121
122 $this->collection_repository->method('existing')->with($identifiation)->willReturn(
123 new ResourceCollection($identifiation, 42, '')
124 );
125
126 $this->collection_repository->method('getResourceIdStrings')->with($identifiation)->willReturn(
127 $this->arrayAsGenerator([])
128 );
129
130 $this->expectException(\LogicException::class);
131 $this->expectExceptionMessage('Invalid owner of collection');
132 $collection = $this->collections->get($identifiation, 84);
133 }
134
135 public function testIsIn(): void
136 {
137 $collection = new ResourceCollection(new ResourceCollectionIdentification(self::DUMMY_RCID), 42, '');
138
139 $this->assertEquals(self::DUMMY_RCID, $collection->getIdentification()->serialize());
140 $this->assertEquals(42, $collection->getOwner());
141 $this->assertTrue($collection->hasSpecificOwner());
142 $this->assertEquals('default', $collection->getTitle());
143
144 $rid_one = new ResourceIdentification('rid_one');
145 $rid_two = new ResourceIdentification('rid_two');
146 $rid_three = new ResourceIdentification('rid_three');
147
148 $this->assertEquals(0, $collection->count());
149
150 $collection->add($rid_one);
151 $this->assertTrue($collection->isIn($rid_one));
152 $this->assertFalse($collection->isIn($rid_two));
153 $this->assertFalse($collection->isIn($rid_three));
154 $this->assertEquals(1, $collection->count());
155
156 $collection->add($rid_two);
157 $this->assertTrue($collection->isIn($rid_one));
158 $this->assertTrue($collection->isIn($rid_two));
159 $this->assertFalse($collection->isIn($rid_three));
160 $this->assertEquals(2, $collection->count());
161
162 $collection->add($rid_three);
163 $this->assertTrue($collection->isIn($rid_one));
164 $this->assertTrue($collection->isIn($rid_two));
165 $this->assertTrue($collection->isIn($rid_three));
166 $this->assertEquals(3, $collection->count());
167
168 $collection->clear();
169 $this->assertFalse($collection->isIn($rid_one));
170 $this->assertFalse($collection->isIn($rid_two));
171 $this->assertFalse($collection->isIn($rid_three));
172 $this->assertEquals(0, $collection->count());
173 }
174
175 public function testAddAndRemove(): void
176 {
177 $collection = new ResourceCollection(
178 new ResourceCollectionIdentification(self::DUMMY_RCID),
180 ''
181 );
182
183 $this->assertEquals(self::DUMMY_RCID, $collection->getIdentification()->serialize());
184 $this->assertEquals(ResourceCollection::NO_SPECIFIC_OWNER, $collection->getOwner());
185 $this->assertFalse($collection->hasSpecificOwner());
186 $this->assertEquals('default', $collection->getTitle());
187
188 $rid_one = new ResourceIdentification('rid_one');
189 $rid_two = new ResourceIdentification('rid_two');
190
191 $this->assertEquals(0, $collection->count());
192
193 $collection->add($rid_one);
194 $this->assertTrue($collection->isIn($rid_one));
195 $this->assertEquals(1, $collection->count());
196
197 $collection->add($rid_two);
198 $this->assertTrue($collection->isIn($rid_one));
199 $this->assertTrue($collection->isIn($rid_two));
200 $this->assertEquals(2, $collection->count());
201
202 $collection->remove($rid_one);
203 $this->assertFalse($collection->isIn($rid_one));
204 $this->assertTrue($collection->isIn($rid_two));
205 $this->assertEquals(1, $collection->count());
206
207 $collection->remove($rid_two);
208 $this->assertFalse($collection->isIn($rid_one));
209 $this->assertFalse($collection->isIn($rid_two));
210 $this->assertEquals(0, $collection->count());
211
212 $collection->clear();
213 $this->assertFalse($collection->isIn($rid_one));
214 $this->assertFalse($collection->isIn($rid_two));
215 $this->assertEquals(0, $collection->count());
216 }
217
218
219 protected function arrayAsGenerator(array $array): \Generator
220 {
221 foreach ($array as $item) {
222 yield $item;
223 }
224 }
225}
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
CollectionIdentificationGenerator $rcid_generator
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...