ILIAS  release_8 Revision v8.24
ilCertificateTemplateRepositoryTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
25{
27 {
28 $database = $this->createMock(ilDBInterface::class);
29
30 $logger = $this->getMockBuilder(ilLogger::class)
31 ->disableOriginalConstructor()
32 ->getMock();
33
34 $objectDataCache = $this->getMockBuilder(ilObjectDataCache::class)
35 ->disableOriginalConstructor()
36 ->getMock();
37
38 $objectDataCache->method('lookUpType')->willReturn('crs');
39
40 $database->method('nextId')
41 ->willReturn(10);
42
43 $database->method('insert')
44 ->with(
45 'il_cert_template',
46 [
47 'id' => ['integer', 10],
48 'obj_id' => ['integer', 100],
49 'obj_type' => ['text', 'crs'],
50 'certificate_content' => ['clob', '<xml>Some Content</xml>'],
51 'certificate_hash' => ['text', md5('<xml>Some Content</xml>')],
52 'template_values' => ['clob', '[]'],
53 'version' => ['integer', 1],
54 'ilias_version' => ['text', 'v5.4.0'],
55 'created_timestamp' => ['integer', 123456789],
56 'currently_active' => ['integer', true],
57 'background_image_path' => ['text', '/some/where/background.jpg'],
58 'deleted' => ['integer', 0],
59 'thumbnail_image_path' => ['text', 'some/path/test.svg']
60 ]
61 );
62
63 $logger->expects($this->atLeastOnce())
64 ->method('debug');
65
66 $template = new ilCertificateTemplate(
67 100,
68 'crs',
69 '<xml>Some Content</xml>',
70 md5('<xml>Some Content</xml>'),
71 '[]',
72 1,
73 'v5.4.0',
74 123456789,
75 true,
76 $backgroundImagePath = '/some/where/background.jpg',
77 'some/path/test.svg'
78 );
79
80 $repository = new ilCertificateTemplateDatabaseRepository($database, $logger, $objectDataCache);
81
82 $repository->save($template);
83 }
84
86 {
87 $database = $this->createMock(ilDBInterface::class);
88
89 $logger = $this->getMockBuilder(ilLogger::class)
90 ->disableOriginalConstructor()
91 ->getMock();
92
93 $database->method('fetchAssoc')
94 ->willReturnOnConsecutiveCalls(
95 [
96 'id' => 1,
97 'obj_id' => 10,
98 'obj_type' => 'crs',
99 'certificate_content' => '<xml>Some Content</xml>',
100 'certificate_hash' => md5('<xml>Some Content</xml>'),
101 'template_values' => '[]',
102 'version' => 1,
103 'ilias_version' => 'v5.4.0',
104 'created_timestamp' => 123456789,
105 'currently_active' => true,
106 'background_image_path' => '/some/where/background.jpg',
107 'thumbnail_image_path' => 'some/path/test.svg'
108 ],
109 [
110 'id' => 30,
111 'obj_id' => 10,
112 'obj_type' => 'tst',
113 'certificate_content' => '<xml>Some Other Content</xml>',
114 'certificate_hash' => md5('<xml>Some Content</xml>'),
115 'template_values' => '[]',
116 'version' => 55,
117 'ilias_version' => 'v5.3.0',
118 'created_timestamp' => 123456789,
119 'currently_active' => false,
120 'background_image_path' => '/some/where/else/background.jpg',
121 'thumbnail_image_path' => 'some/path/test.svg'
122 ]
123 );
124
125 $objectDataCache = $this->getMockBuilder(ilObjectDataCache::class)
126 ->disableOriginalConstructor()
127 ->getMock();
128
129 $objectDataCache->method('lookUpType')->willReturn('crs');
130
131 $repository = new ilCertificateTemplateDatabaseRepository($database, $logger, $objectDataCache);
132
133 $templates = $repository->fetchCertificateTemplatesByObjId(10);
134
135 $this->assertSame(1, $templates[0]->getId());
136 $this->assertSame(30, $templates[1]->getId());
137 }
138
140 {
141 $database = $this->createMock(ilDBInterface::class);
142
143 $logger = $this->getMockBuilder(ilLogger::class)
144 ->disableOriginalConstructor()
145 ->getMock();
146
147 $database->method('fetchAssoc')
148 ->willReturnOnConsecutiveCalls(
149 [
150 'id' => 1,
151 'obj_id' => 10,
152 'obj_type' => 'crs',
153 'certificate_content' => '<xml>Some Content</xml>',
154 'certificate_hash' => md5('<xml>Some Content</xml>'),
155 'template_values' => '[]',
156 'version' => 1,
157 'ilias_version' => 'v5.4.0',
158 'created_timestamp' => 123456789,
159 'currently_active' => true,
160 'background_image_path' => '/some/where/background.jpg',
161 'thumbnail_image_path' => 'some/path/test.svg'
162 ],
163 [
164 'id' => 30,
165 'obj_id' => 10,
166 'obj_type' => 'tst',
167 'certificate_content' => '<xml>Some Other Content</xml>',
168 'certificate_hash' => md5('<xml>Some Content</xml>'),
169 'template_values' => '[]',
170 'version' => 55,
171 'ilias_version' => 'v5.3.0',
172 'created_timestamp' => 123456789,
173 'currently_active' => false,
174 'background_image_path' => '/some/where/else/background.jpg',
175 'thumbnail_image_path' => 'some/path/test.svg'
176 ]
177 );
178
179 $objectDataCache = $this->getMockBuilder(ilObjectDataCache::class)
180 ->disableOriginalConstructor()
181 ->getMock();
182
183 $objectDataCache->method('lookUpType')->willReturn('crs');
184
185 $repository = new ilCertificateTemplateDatabaseRepository($database, $logger, $objectDataCache);
186
187 $template = $repository->fetchCurrentlyActiveCertificate(10);
188
189 $this->assertSame(1, $template->getId());
190 }
191
192 public function testFetchPreviousCertificate(): void
193 {
194 $database = $this->getMockBuilder(ilDBInterface::class)
195 ->disableOriginalConstructor()
196 ->getMock();
197
198 $logger = $this->getMockBuilder(ilLogger::class)
199 ->disableOriginalConstructor()
200 ->getMock();
201
202 $database->method('fetchAssoc')
203 ->willReturnOnConsecutiveCalls(
204 [
205 'id' => 1,
206 'obj_id' => 10,
207 'obj_type' => 'crs',
208 'certificate_content' => '<xml>Some Content</xml>',
209 'certificate_hash' => md5('<xml>Some Content</xml>'),
210 'template_values' => '[]',
211 'version' => 1,
212 'ilias_version' => 'v5.4.0',
213 'created_timestamp' => 123456789,
214 'currently_active' => true,
215 'background_image_path' => '/some/where/background.jpg',
216 'thumbnail_image_path' => 'some/path/test.svg'
217 ],
218 [
219 'id' => 30,
220 'obj_id' => 10,
221 'obj_type' => 'tst',
222 'certificate_content' => '<xml>Some Other Content</xml>',
223 'certificate_hash' => md5('<xml>Some Content</xml>'),
224 'template_values' => '[]',
225 'version' => 55,
226 'ilias_version' => 'v5.3.0',
227 'created_timestamp' => 123456789,
228 'currently_active' => false,
229 'background_image_path' => '/some/where/else/background.jpg',
230 'thumbnail_image_path' => 'some/path/test.svg'
231 ]
232 );
233
234 $objectDataCache = $this->getMockBuilder(ilObjectDataCache::class)
235 ->disableOriginalConstructor()
236 ->getMock();
237
238 $objectDataCache->method('lookUpType')->willReturn('crs');
239
240 $repository = new ilCertificateTemplateDatabaseRepository($database, $logger, $objectDataCache);
241
242 $template = $repository->fetchPreviousCertificate(10);
243
244 $this->assertSame(30, $template->getId());
245 }
246
250 public function testDeleteTemplateFromDatabase(): void
251 {
252 $database = $this->createMock(ilDBInterface::class);
253
254 $logger = $this->getMockBuilder(ilLogger::class)
255 ->disableOriginalConstructor()
256 ->getMock();
257
258 $database->method('quote')
259 ->withConsecutive([10, 'integer'], [200, 'integer'])
260 ->willReturnOnConsecutiveCalls('10', '200');
261
262 $database->method('query')
263 ->with('
264DELETE FROM il_cert_template
265WHERE id = 10
266AND obj_id = 200');
267
268 $objectDataCache = $this->getMockBuilder(ilObjectDataCache::class)
269 ->disableOriginalConstructor()
270 ->getMock();
271
272 $objectDataCache->method('lookUpType')->willReturn('crs');
273
274 $repository = new ilCertificateTemplateDatabaseRepository($database, $logger, $objectDataCache);
275
276 $repository->deleteTemplate(10, 200);
277 }
278
279 public function testActivatePreviousCertificate(): void
280 {
281 $database = $this->createMock(ilDBInterface::class);
282
283 $logger = $this->getMockBuilder(ilLogger::class)
284 ->disableOriginalConstructor()
285 ->getMock();
286
287 $database->method('quote')
288 ->withConsecutive([10, 'integer'], [30, 'integer'])
289 ->willReturnOnConsecutiveCalls('10', '30');
290
291 $database->method('fetchAssoc')->willReturnOnConsecutiveCalls(
292 [
293 'id' => 1,
294 'obj_id' => 10,
295 'obj_type' => 'crs',
296 'certificate_content' => '<xml>Some Content</xml>',
297 'certificate_hash' => md5('<xml>Some Content</xml>'),
298 'template_values' => '[]',
299 'version' => 1,
300 'ilias_version' => 'v5.4.0',
301 'created_timestamp' => 123456789,
302 'currently_active' => true,
303 'background_image_path' => '/some/where/background.jpg',
304 'thumbnail_image_path' => 'some/path/test.svg'
305 ],
306 [
307 'id' => 30,
308 'obj_id' => 10,
309 'obj_type' => 'tst',
310 'certificate_content' => '<xml>Some Other Content</xml>',
311 'certificate_hash' => md5('<xml>Some Content</xml>'),
312 'template_values' => '[]',
313 'version' => 55,
314 'ilias_version' => 'v5.3.0',
315 'created_timestamp' => 123456789,
316 'currently_active' => false,
317 'background_image_path' => '/some/where/else/background.jpg',
318 'thumbnail_image_path' => 'some/path/test.svg'
319 ]
320 );
321
322 $database->method('query')
323 ->withConsecutive(
324 [$this->anything()],
325 [
326 'UPDATE il_cert_template
327SET currently_active = 1
328WHERE id = 30'
329 ]
330 );
331
332 $objectDataCache = $this->getMockBuilder(ilObjectDataCache::class)
333 ->disableOriginalConstructor()
334 ->getMock();
335
336 $objectDataCache->method('lookUpType')->willReturn('crs');
337
338 $repository = new ilCertificateTemplateDatabaseRepository($database, $logger, $objectDataCache);
339
340 $template = $repository->activatePreviousCertificate(10);
341
342 $this->assertSame(30, $template->getId());
343 }
344
345 public function testFetchAllObjectIdsByType(): void
346 {
347 $database = $this->createMock(ilDBInterface::class);
348
349 $logger = $this->getMockBuilder(ilLogger::class)
350 ->disableOriginalConstructor()
351 ->getMock();
352
353 $objectDataCache = $this->getMockBuilder(ilObjectDataCache::class)
354 ->disableOriginalConstructor()
355 ->getMock();
356
357 $database->method('fetchAssoc')->willReturnOnConsecutiveCalls(
358 [
359 'id' => 1,
360 'obj_id' => 10,
361 'obj_type' => 'crs',
362 'certificate_content' => '<xml>Some Content</xml>',
363 'certificate_hash' => md5('<xml>Some Content</xml>'),
364 'template_values' => '[]',
365 'version' => 1,
366 'ilias_version' => 'v5.4.0',
367 'created_timestamp' => 123456789,
368 'currently_active' => true,
369 'background_image_path' => '/some/where/background.jpg',
370 'thumbnail_image_path' => '/some/where/thumbnail.svg'
371 ],
372 [
373 'id' => 30,
374 'obj_id' => 30,
375 'obj_type' => 'crs',
376 'certificate_content' => '<xml>Some Other Content</xml>',
377 'certificate_hash' => md5('<xml>Some Content</xml>'),
378 'template_values' => '[]',
379 'version' => 55,
380 'ilias_version' => 'v5.3.0',
381 'created_timestamp' => 123456789,
382 'currently_active' => false,
383 'background_image_path' => '/some/where/else/background.jpg',
384 'thumbnail_image_path' => '/some/where/thumbnail.svg'
385 ]
386 );
387
388 $repository = new ilCertificateTemplateDatabaseRepository($database, $logger, $objectDataCache);
389
390 $templates = $repository->fetchActiveCertificateTemplatesForCoursesWithDisabledLearningProgress(true);
391
392 $this->assertSame(10, $templates[0]->getObjId());
393 $this->assertSame(30, $templates[1]->getObjId());
394 }
395
400 {
401 $this->expectException(ilException::class);
402
403 $database = $this->createMock(ilDBInterface::class);
404
405 $logger = $this->getMockBuilder(ilLogger::class)
406 ->disableOriginalConstructor()
407 ->getMock();
408
409 $database->method('quote')
410 ->with(10, 'integer')
411 ->willReturn('10');
412
413 $objectDataCache = $this->getMockBuilder(ilObjectDataCache::class)
414 ->disableOriginalConstructor()
415 ->getMock();
416
417 $database->method('fetchAssoc')
418 ->willReturn([]);
419
420 $database->method('fetchAssoc')
421 ->willReturn([]);
422
423 $repository = new ilCertificateTemplateDatabaseRepository($database, $logger, $objectDataCache);
424
425 $repository->fetchFirstCreatedTemplate(10);
426
427 $this->fail();
428 }
429
430 public function fetchFirstCreateTemplate(): void
431 {
432 $database = $this->createMock(ilDBInterface::class);
433
434 $logger = $this->getMockBuilder(ilLogger::class)
435 ->disableOriginalConstructor()
436 ->getMock();
437
438 $database->method('quote')
439 ->with(10, 'integer')
440 ->willReturn(10);
441
442 $objectDataCache = $this->getMockBuilder(ilObjectDataCache::class)
443 ->disableOriginalConstructor()
444 ->getMock();
445
446 $database->method('fetchAssoc')
447 ->willReturn([]);
448
449 $database->method('fetchAssoc')->willReturn(
450 [
451 'id' => 1,
452 'obj_id' => 10,
453 'obj_type' => 'crs',
454 'certificate_content' => '<xml>Some Content</xml>',
455 'certificate_hash' => md5('<xml>Some Content</xml>'),
456 'template_values' => '[]',
457 'version' => 1,
458 'ilias_version' => 'v5.4.0',
459 'created_timestamp' => 123456789,
460 'currently_active' => true,
461 'background_image_path' => '/some/where/background.jpg'
462 ]
463 );
464
465 $repository = new ilCertificateTemplateDatabaseRepository($database, $logger, $objectDataCache);
466
467 $firstTemplate = $repository->fetchFirstCreatedTemplate(10);
468
469 $this->assertSame(1, $firstTemplate->getId());
470 }
471}
Class ilCertificateBaseTestCase.