ILIAS  trunk Revision v12.0_alpha-1540-g00f839d5fa1
ilUserCertificateRepositoryTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
24{
26 {
27 $database = $this->createMock(ilDBInterface::class);
28
29 $database->method('nextId')
30 ->willReturn(141);
31
32 $database
33 ->expects($this->once())
34 ->method('insert')
35 ->with(
36 'il_cert_user_cert',
37 [
38 'id' => ['integer', 141],
39 'pattern_certificate_id' => ['integer', 1],
40 'obj_id' => ['integer', 20],
41 'obj_type' => ['text', 'crs'],
42 'usr_id' => ['integer', 400],
43 'user_name' => ['text', 'Niels Theen'],
44 'acquired_timestamp' => ['integer', 123_456_789],
45 'certificate_content' => ['clob', '<xml>Some Content</xml>'],
46 'template_values' => ['clob', '[]'],
47 'valid_until' => ['integer', null],
48 'version' => ['integer', 1],
49 'ilias_version' => ['text', 'v5.4.0'],
50 'currently_active' => ['integer', true],
51 'background_image_ident' => ['text', '-'],
52 'tile_image_ident' => ['text', '-'],
53 'certificate_id' => ['text', '11111111-2222-3333-4444-555555555555'],
54 ]
55 );
56
57 $logger = $this->getMockBuilder(ilLogger::class)
58 ->disableOriginalConstructor()
59 ->getMock();
60
61 $logger->expects($this->atLeastOnce())
62 ->method('debug');
63
64 $repository = new ilUserCertificateRepository(
65 $database,
66 $logger,
67 'someDefaultTitle'
68 );
69
70 $userCertificate = new ilUserCertificate(
71 1,
72 20,
73 'crs',
74 400,
75 'Niels Theen',
76 123_456_789,
77 '<xml>Some Content</xml>',
78 '[]',
79 null,
80 1,
81 'v5.4.0',
82 true,
83 new CertificateId('11111111-2222-3333-4444-555555555555'),
84 '-',
85 '-',
86 null
87 );
88
89 $repository->save($userCertificate);
90 }
91
93 {
94 $database = $this->createMock(ilDBInterface::class);
95
96 $database->method('nextId')
97 ->willReturn(141);
98
99 $database->method('fetchAssoc')->willReturnOnConsecutiveCalls(
100 [
101 'id' => 141,
102 'pattern_certificate_id' => 1,
103 'obj_id' => 20,
104 'obj_type' => 'crs',
105 'usr_id' => 400,
106 'user_name' => 'Niels Theen',
107 'acquired_timestamp' => 123_456_789,
108 'certificate_content' => '<xml>Some Content</xml>',
109 'template_values' => '[]',
110 'valid_until' => null,
111 'version' => 1,
112 'ilias_version' => 'v5.4.0',
113 'currently_active' => true,
114 'background_image_ident' => '-',
115 'tile_image_ident' => '-',
116 'title' => 'Some Title',
117 'certificate_id' => '11111111-2222-3333-4444-555555555555'
118 ],
119 [
120 'id' => 142,
121 'pattern_certificate_id' => 5,
122 'obj_id' => 3123,
123 'obj_type' => 'tst',
124 'usr_id' => 400,
125 'user_name' => 'Niels Theen',
126 'acquired_timestamp' => 987_654_321,
127 'certificate_content' => '<xml>Some Other Content</xml>',
128 'template_values' => '[]',
129 'valid_until' => null,
130 'version' => 1,
131 'ilias_version' => 'v5.3.0',
132 'currently_active' => true,
133 'background_image_ident' => '-',
134 'tile_image_ident' => '-',
135 'title' => 'Someother Title',
136 'certificate_id' => '11111111-2222-3333-4444-555555555555'
137 ],
138 null
139 );
140
141 $logger = $this->getMockBuilder(ilLogger::class)
142 ->disableOriginalConstructor()
143 ->getMock();
144
145 $logger->expects($this->atLeastOnce())
146 ->method('debug');
147
148 $repository = new ilUserCertificateRepository(
149 $database,
150 $logger,
151 'someDefaultTitle'
152 );
153
154 $results = $repository->fetchActiveCertificates(400);
155
156 $this->assertSame(141, $results[0]->getUserCertificate()->getId());
157 $this->assertSame(142, $results[1]->getUserCertificate()->getId());
158 }
159
161 {
162 $database = $this->createMock(ilDBInterface::class);
163
164 $database->method('nextId')
165 ->willReturn(141);
166
167 $database->method('fetchAssoc')->willReturnOnConsecutiveCalls(
168 [
169 'id' => 141,
170 'pattern_certificate_id' => 1,
171 'obj_id' => 20,
172 'obj_type' => 'crs',
173 'usr_id' => 400,
174 'user_name' => 'Niels Theen',
175 'acquired_timestamp' => 123_456_789,
176 'certificate_content' => '<xml>Some Content</xml>',
177 'template_values' => '[]',
178 'valid_until' => null,
179 'version' => 1,
180 'ilias_version' => 'v5.4.0',
181 'currently_active' => true,
182 'background_image_ident' => '-',
183 'tile_image_ident' => '-',
184 'certificate_id' => '11111111-2222-3333-4444-555555555555'
185 ],
186 [
187 'id' => 142,
188 'pattern_certificate_id' => 5,
189 'obj_id' => 20,
190 'obj_type' => 'tst',
191 'usr_id' => 400,
192 'user_name' => 'Niels Theen',
193 'acquired_timestamp' => 987_654_321,
194 'certificate_content' => '<xml>Some Other Content</xml>',
195 'template_values' => '[]',
196 'valid_until' => null,
197 'version' => 1,
198 'ilias_version' => 'v5.3.0',
199 'currently_active' => true,
200 'background_image_ident' => '-',
201 'tile_image_ident' => '-',
202 'certificate_id' => '11111111-2222-3333-4444-555555555555'
203 ]
204 );
205
206 $logger = $this->getMockBuilder(ilLogger::class)
207 ->disableOriginalConstructor()
208 ->getMock();
209
210 $logger->expects($this->atLeastOnce())
211 ->method('debug');
212
213 $repository = new ilUserCertificateRepository(
214 $database,
215 $logger,
216 'someDefaultTitle'
217 );
218
219 $result = $repository->fetchActiveCertificate(400, 20);
220
221 $this->assertSame(141, $result->getId());
222 }
223
225 {
226 $this->expectException(ilException::class);
227
228 $database = $this->createMock(ilDBInterface::class);
229
230 $database->method('nextId')
231 ->willReturn(141);
232
233 $database->method('fetchAssoc')->willReturn([]);
234
235 $logger = $this->getMockBuilder(ilLogger::class)
236 ->disableOriginalConstructor()
237 ->getMock();
238
239 $logger->expects($this->atLeastOnce())
240 ->method('debug');
241
242 $repository = new ilUserCertificateRepository($database, $logger, 'someDefaultTitle');
243
244 $repository->fetchActiveCertificate(400, 20);
245
246 $this->fail('Should never happen. Certificate Found?');
247 }
248
249 public function testFetchActiveCertificatesByType(): void
250 {
251 $database = $this->createMock(ilDBInterface::class);
252
253 $database->method('nextId')
254 ->willReturn(141);
255
256 $database->method('fetchAssoc')->willReturnOnConsecutiveCalls(
257 [
258 'id' => 141,
259 'pattern_certificate_id' => 1,
260 'obj_id' => 20,
261 'obj_type' => 'crs',
262 'usr_id' => 400,
263 'user_name' => 'Niels Theen',
264 'acquired_timestamp' => 123_456_789,
265 'certificate_content' => '<xml>Some Content</xml>',
266 'template_values' => '[]',
267 'valid_until' => null,
268 'version' => 1,
269 'ilias_version' => 'v5.4.0',
270 'currently_active' => true,
271 'background_image_ident' => '-',
272 'tile_image_ident' => '-',
273 'title' => 'SomeTitle',
274 'someDescription' => 'SomeDescription',
275 'certificate_id' => '11111111-2222-3333-4444-555555555555'
276 ],
277 [
278 'id' => 142,
279 'pattern_certificate_id' => 5,
280 'obj_id' => 20,
281 'obj_type' => 'crs',
282 'usr_id' => 400,
283 'user_name' => 'Niels Theen',
284 'acquired_timestamp' => 987_654_321,
285 'certificate_content' => '<xml>Some Other Content</xml>',
286 'template_values' => '[]',
287 'valid_until' => null,
288 'version' => 1,
289 'ilias_version' => 'v5.3.0',
290 'currently_active' => true,
291 'background_image_ident' => '-',
292 'tile_image_ident' => '-',
293 'title' => 'SomeTitle',
294 'someDescription' => 'SomeDescription',
295 'certificate_id' => '11111111-2222-3333-4444-555555555555'
296 ],
297 null
298 );
299
300 $logger = $this->getMockBuilder(ilLogger::class)
301 ->disableOriginalConstructor()
302 ->getMock();
303
304 $logger->expects($this->atLeastOnce())
305 ->method('debug');
306
307 $repository = new ilUserCertificateRepository($database, $logger, 'someDefaultTitle');
308
309 $results = $repository->fetchActiveCertificatesByTypeForPresentation(400, 'crs');
310
311 $this->assertSame(141, $results[0]->getUserCertificate()->getId());
312 $this->assertSame(142, $results[1]->getUserCertificate()->getId());
313 }
314
315 public function testFetchCertificate(): void
316 {
317 $database = $this->createMock(ilDBInterface::class);
318
319 $database->method('nextId')
320 ->willReturn(141);
321
322 $database->method('fetchAssoc')->willReturn(
323 [
324 'id' => 141,
325 'pattern_certificate_id' => 1,
326 'obj_id' => 20,
327 'obj_type' => 'crs',
328 'usr_id' => 400,
329 'user_name' => 'Niels Theen',
330 'acquired_timestamp' => 123_456_789,
331 'certificate_content' => '<xml>Some Content</xml>',
332 'template_values' => '[]',
333 'valid_until' => null,
334 'version' => 1,
335 'ilias_version' => 'v5.4.0',
336 'currently_active' => true,
337 'background_image_ident' => '-',
338 'tile_image_ident' => '-',
339 'title' => 'SomeTitle',
340 'someDescription' => 'SomeDescription',
341 'certificate_id' => '11111111-2222-3333-4444-555555555555'
342 ]
343 );
344
345 $logger = $this->getMockBuilder(ilLogger::class)
346 ->disableOriginalConstructor()
347 ->getMock();
348
349 $logger->expects($this->atLeastOnce())
350 ->method('debug');
351
352 $repository = new ilUserCertificateRepository($database, $logger, 'someTitle');
353
354 $result = $repository->fetchCertificate(141);
355
356 $this->assertSame(141, $result->getId());
357 }
358
360 {
361 $this->expectException(ilException::class);
362
363 $database = $this->createMock(ilDBInterface::class);
364
365 $database->method('nextId')
366 ->willReturn(141);
367
368 $database->method('fetchAssoc')
369 ->willReturn([]);
370
371 $logger = $this->getMockBuilder(ilLogger::class)
372 ->disableOriginalConstructor()
373 ->getMock();
374
375 $logger->expects($this->atLeastOnce())
376 ->method('debug');
377
378 $repository = new ilUserCertificateRepository($database, $logger, 'someTitle');
379
380 $repository->fetchCertificate(141);
381
382 $this->fail('Should never happen. Certificate Found?');
383 }
384
386 {
387 $database = $this->createMock(ilDBInterface::class);
388
389 $database
390 ->expects($this->once())
391 ->method('query');
392
393 $database
394 ->expects($this->once())
395 ->method('in');
396
397 $database
398 ->expects($this->exactly(3))
399 ->method('fetchAssoc')
400 ->willReturnOnConsecutiveCalls(
401 ['obj_id' => 100],
402 ['obj_id' => 300],
403 []
404 );
405
406 $database->method('fetchAssoc')
407 ->willReturn([]);
408
409 $logger = $this->getMockBuilder(ilLogger::class)
410 ->disableOriginalConstructor()
411 ->getMock();
412
413 $logger->expects($this->atLeastOnce())
414 ->method('debug');
415
416 $repository = new ilUserCertificateRepository($database, $logger, 'someTitle');
417
418 $userId = 10;
419 $objectIds = [200, 300, 400];
420
421 $results = $repository->fetchObjectIdsWithCertificateForUser($userId, $objectIds);
422
423 $this->assertSame([100, 300], $results);
424 }
425
427 {
428 $database = $this->createMock(ilDBInterface::class);
429
430 $database
431 ->expects($this->once())
432 ->method('query');
433
434 $database
435 ->expects($this->exactly(3))
436 ->method('fetchAssoc')
437 ->willReturnOnConsecutiveCalls(
438 ['usr_id' => 100],
439 ['usr_id' => 300],
440 []
441 );
442
443 $database->method('fetchAssoc')
444 ->willReturn([]);
445
446 $logger = $this->getMockBuilder(ilLogger::class)
447 ->disableOriginalConstructor()
448 ->getMock();
449
450 $logger->expects($this->atLeastOnce())
451 ->method('debug');
452
453 $repository = new ilUserCertificateRepository($database, $logger, 'someTitle');
454
455 $objectId = 10;
456
457 $results = $repository->fetchUserIdsWithCertificateForObject($objectId);
458
459 $this->assertSame([100, 300], $results);
460 }
461}
$results