19declare(strict_types=1);
27 $database = $this->createMock(ilDBInterface::class);
29 $database->method(
'nextId')
32 $database->method(
'insert')->with(
35 'id' => [
'integer', 141],
36 'pattern_certificate_id' => [
'integer', 1],
37 'obj_id' => [
'integer', 20],
38 'obj_type' => [
'text',
'crs'],
39 'usr_id' => [
'integer', 400],
40 'user_name' => [
'text',
'Niels Theen'],
41 'acquired_timestamp' => [
'integer', 123_456_789],
42 'certificate_content' => [
'clob',
'<xml>Some Content</xml>'],
43 'template_values' => [
'clob',
'[]'],
44 'valid_until' => [
'integer',
null],
45 'version' => [
'integer', 1],
46 'ilias_version' => [
'text',
'v5.4.0'],
47 'currently_active' => [
'integer',
true],
48 'background_image_ident' => [
'text',
'-'],
49 'tile_image_ident' => [
'text',
'-'],
50 'certificate_id' => [
'text',
'11111111-2222-3333-4444-555555555555'],
54 $logger = $this->getMockBuilder(ilLogger::class)
55 ->disableOriginalConstructor()
58 $logger->expects($this->atLeastOnce())
74 '<xml>Some Content</xml>',
86 $repository->save($userCertificate);
91 $database = $this->createMock(ilDBInterface::class);
93 $database->method(
'nextId')
96 $database->method(
'fetchAssoc')->willReturnOnConsecutiveCalls(
99 'pattern_certificate_id' => 1,
103 'user_name' =>
'Niels Theen',
104 'acquired_timestamp' => 123_456_789,
105 'certificate_content' =>
'<xml>Some Content</xml>',
106 'template_values' =>
'[]',
107 'valid_until' =>
null,
109 'ilias_version' =>
'v5.4.0',
110 'currently_active' =>
true,
111 'background_image_ident' =>
'-',
112 'tile_image_ident' =>
'-',
113 'title' =>
'Some Title',
114 'certificate_id' =>
'11111111-2222-3333-4444-555555555555'
118 'pattern_certificate_id' => 5,
122 'user_name' =>
'Niels Theen',
123 'acquired_timestamp' => 987_654_321,
124 'certificate_content' =>
'<xml>Some Other Content</xml>',
125 'template_values' =>
'[]',
126 'valid_until' =>
null,
128 'ilias_version' =>
'v5.3.0',
129 'currently_active' =>
true,
130 'background_image_ident' =>
'-',
131 'tile_image_ident' =>
'-',
132 'title' =>
'Someother Title',
133 'certificate_id' =>
'11111111-2222-3333-4444-555555555555'
138 $logger = $this->getMockBuilder(ilLogger::class)
139 ->disableOriginalConstructor()
142 $logger->expects($this->atLeastOnce())
151 $results = $repository->fetchActiveCertificates(400);
153 $this->assertSame(141,
$results[0]->getUserCertificate()->
getId());
154 $this->assertSame(142,
$results[1]->getUserCertificate()->
getId());
159 $database = $this->createMock(ilDBInterface::class);
161 $database->method(
'nextId')
164 $database->method(
'fetchAssoc')->willReturnOnConsecutiveCalls(
167 'pattern_certificate_id' => 1,
171 'user_name' =>
'Niels Theen',
172 'acquired_timestamp' => 123_456_789,
173 'certificate_content' =>
'<xml>Some Content</xml>',
174 'template_values' =>
'[]',
175 'valid_until' =>
null,
177 'ilias_version' =>
'v5.4.0',
178 'currently_active' =>
true,
179 'background_image_ident' =>
'-',
180 'tile_image_ident' =>
'-',
181 'certificate_id' =>
'11111111-2222-3333-4444-555555555555'
185 'pattern_certificate_id' => 5,
189 'user_name' =>
'Niels Theen',
190 'acquired_timestamp' => 987_654_321,
191 'certificate_content' =>
'<xml>Some Other Content</xml>',
192 'template_values' =>
'[]',
193 'valid_until' =>
null,
195 'ilias_version' =>
'v5.3.0',
196 'currently_active' =>
true,
197 'background_image_ident' =>
'-',
198 'tile_image_ident' =>
'-',
199 'certificate_id' =>
'11111111-2222-3333-4444-555555555555'
203 $logger = $this->getMockBuilder(ilLogger::class)
204 ->disableOriginalConstructor()
207 $logger->expects($this->atLeastOnce())
216 $result = $repository->fetchActiveCertificate(400, 20);
218 $this->assertSame(141, $result->getId());
223 $this->expectException(ilException::class);
225 $database = $this->createMock(ilDBInterface::class);
227 $database->method(
'nextId')
230 $database->method(
'fetchAssoc')->willReturn([]);
232 $logger = $this->getMockBuilder(ilLogger::class)
233 ->disableOriginalConstructor()
236 $logger->expects($this->atLeastOnce())
241 $repository->fetchActiveCertificate(400, 20);
243 $this->fail(
'Should never happen. Certificate Found?');
248 $database = $this->createMock(ilDBInterface::class);
250 $database->method(
'nextId')
253 $database->method(
'fetchAssoc')->willReturnOnConsecutiveCalls(
256 'pattern_certificate_id' => 1,
260 'user_name' =>
'Niels Theen',
261 'acquired_timestamp' => 123_456_789,
262 'certificate_content' =>
'<xml>Some Content</xml>',
263 'template_values' =>
'[]',
264 'valid_until' =>
null,
266 'ilias_version' =>
'v5.4.0',
267 'currently_active' =>
true,
268 'background_image_ident' =>
'-',
269 'tile_image_ident' =>
'-',
270 'title' =>
'SomeTitle',
271 'someDescription' =>
'SomeDescription',
272 'certificate_id' =>
'11111111-2222-3333-4444-555555555555'
276 'pattern_certificate_id' => 5,
280 'user_name' =>
'Niels Theen',
281 'acquired_timestamp' => 987_654_321,
282 'certificate_content' =>
'<xml>Some Other Content</xml>',
283 'template_values' =>
'[]',
284 'valid_until' =>
null,
286 'ilias_version' =>
'v5.3.0',
287 'currently_active' =>
true,
288 'background_image_ident' =>
'-',
289 'tile_image_ident' =>
'-',
290 'title' =>
'SomeTitle',
291 'someDescription' =>
'SomeDescription',
292 'certificate_id' =>
'11111111-2222-3333-4444-555555555555'
297 $logger = $this->getMockBuilder(ilLogger::class)
298 ->disableOriginalConstructor()
301 $logger->expects($this->atLeastOnce())
306 $results = $repository->fetchActiveCertificatesByTypeForPresentation(400,
'crs');
308 $this->assertSame(141,
$results[0]->getUserCertificate()->
getId());
309 $this->assertSame(142,
$results[1]->getUserCertificate()->
getId());
314 $database = $this->createMock(ilDBInterface::class);
316 $database->method(
'nextId')
319 $database->method(
'fetchAssoc')->willReturn(
322 'pattern_certificate_id' => 1,
326 'user_name' =>
'Niels Theen',
327 'acquired_timestamp' => 123_456_789,
328 'certificate_content' =>
'<xml>Some Content</xml>',
329 'template_values' =>
'[]',
330 'valid_until' =>
null,
332 'ilias_version' =>
'v5.4.0',
333 'currently_active' =>
true,
334 'background_image_ident' =>
'-',
335 'tile_image_ident' =>
'-',
336 'title' =>
'SomeTitle',
337 'someDescription' =>
'SomeDescription',
338 'certificate_id' =>
'11111111-2222-3333-4444-555555555555'
342 $logger = $this->getMockBuilder(ilLogger::class)
343 ->disableOriginalConstructor()
346 $logger->expects($this->atLeastOnce())
351 $result = $repository->fetchCertificate(141);
353 $this->assertSame(141, $result->getId());
358 $this->expectException(ilException::class);
360 $database = $this->createMock(ilDBInterface::class);
362 $database->method(
'nextId')
365 $database->method(
'fetchAssoc')
368 $logger = $this->getMockBuilder(ilLogger::class)
369 ->disableOriginalConstructor()
372 $logger->expects($this->atLeastOnce())
377 $repository->fetchCertificate(141);
379 $this->fail(
'Should never happen. Certificate Found?');
384 $database = $this->createMock(ilDBInterface::class);
387 ->expects($this->once())
391 ->expects($this->once())
395 ->expects($this->exactly(3))
396 ->method(
'fetchAssoc')
397 ->willReturnOnConsecutiveCalls(
403 $database->method(
'fetchAssoc')
406 $logger = $this->getMockBuilder(ilLogger::class)
407 ->disableOriginalConstructor()
410 $logger->expects($this->atLeastOnce())
416 $objectIds = [200, 300, 400];
418 $results = $repository->fetchObjectIdsWithCertificateForUser($userId, $objectIds);
420 $this->assertSame([100, 300],
$results);
425 $database = $this->createMock(ilDBInterface::class);
428 ->expects($this->once())
432 ->expects($this->exactly(3))
433 ->method(
'fetchAssoc')
434 ->willReturnOnConsecutiveCalls(
440 $database->method(
'fetchAssoc')
443 $logger = $this->getMockBuilder(ilLogger::class)
444 ->disableOriginalConstructor()
447 $logger->expects($this->atLeastOnce())
454 $results = $repository->fetchUserIdsWithCertificateForObject($objectId);
456 $this->assertSame([100, 300],
$results);
testFetchUserIdsWithCertificateForObject()
testFetchActiveCertificateForUserObjectCombination()
testFetchNoActiveCertificateLeadsToException()
testFetchAllActiveCertificateForUser()
testFetchActiveCertificatesByType()
testSaveOfUserCertificateToDatabase()
testNoCertificateInFetchtCertificateLeadsToException()
testFetchObjectWithCertificateForUser()