ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
ilTermsOfServiceDocumentTest.php
Go to the documentation of this file.
1<?php declare(strict_types=1);
2/* Copyright (c) 1998-2018 ILIAS open source, Extended GPL, see docs/LICENSE */
3
9{
14 public function criteriaAssignmentProvider() : array
15 {
16 $criterionAssignment1 = $this
17 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
18 ->disableOriginalConstructor()
19 ->setMethods(['getId', 'getCriterionValue', 'getCriterionId', 'store', 'delete'])
20 ->getMock();
21
22 $criterionAssignment1
23 ->expects($this->any())
24 ->method('getId')
25 ->willReturn(1);
26
27 $criterionAssignment1
28 ->expects($this->any())
29 ->method('getCriterionId')
30 ->willReturn('usr_global_role');
31
32 $criterionAssignment1
33 ->expects($this->any())
34 ->method('getCriterionValue')
35 ->willReturn($this->getCriterionConfig(['role_id' => 4]));
36
37 $criterionAssignment2 = $this
38 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
39 ->disableOriginalConstructor()
40 ->setMethods(['getId', 'getCriterionValue', 'getCriterionId', 'store', 'delete'])
41 ->getMock();
42
43 $criterionAssignment2
44 ->expects($this->any())
45 ->method('getId')
46 ->willReturn(2);
47
48 $criterionAssignment2
49 ->expects($this->any())
50 ->method('getCriterionId')
51 ->willReturn('usr_language');
52
53 $criterionAssignment2
54 ->expects($this->any())
55 ->method('getCriterionValue')
56 ->willReturn($this->getCriterionConfig(['lng' => 'de']));
57
58 $criterionAssignment3 = $this
59 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
60 ->disableOriginalConstructor()
61 ->setMethods(['getId', 'getCriterionValue', 'getCriterionId', 'store', 'delete'])
62 ->getMock();
63
64 $criterionAssignment3
65 ->expects($this->any())
66 ->method('getId')
67 ->willReturn(3);
68
69 $criterionAssignment3
70 ->expects($this->any())
71 ->method('getCriterionId')
72 ->willReturn('usr_global_role');
73
74 $criterionAssignment3
75 ->expects($this->any())
76 ->method('getCriterionValue')
77 ->willReturn($this->getCriterionConfig(['role_id' => 6]));
78
79 return [
80 [$criterionAssignment1, $criterionAssignment2, $criterionAssignment3]
81 ];
82 }
83
95 ) : void {
96 $documentConnector = $this->getMockBuilder(arConnector::class)->getMock();
97 $criterionConnector = $this->getMockBuilder(arConnector::class)->getMock();
98
99 $criterionConnector
100 ->expects($this->once())
101 ->method('readSet')
102 ->willReturnCallback(function () use ($criterionAssignment1, $criterionAssignment2, $criterionAssignment3) {
103 return [
104 [
105 'id' => $criterionAssignment1->getId(),
106 'doc_id' => 4711,
107 'criterion_id' => $criterionAssignment1->getCriterionId(),
108 'criterion_value' => $criterionAssignment1->getCriterionValue(),
109 ],
110 [
111 'id' => $criterionAssignment2->getId(),
112 'doc_id' => 4711,
113 'criterion_id' => $criterionAssignment2->getCriterionId(),
114 'criterion_value' => $criterionAssignment2->getCriterionValue(),
115 ],
116 [
117 'id' => $criterionAssignment3->getId(),
118 'doc_id' => 4711,
119 'criterion_id' => $criterionAssignment3->getCriterionId(),
120 'criterion_value' => $criterionAssignment3->getCriterionValue(),
121 ]
122 ];
123 });
124
125 arConnectorMap::register(new ilTermsOfServiceDocument(), $documentConnector);
127
128 $document = new ilTermsOfServiceDocument();
129
130 $document->buildFromArray([
131 'id' => 4711,
132 'title' => 'phpunit',
133 ]);
134
135 $this->assertCount(3, $document->criteria());
136 }
137
149 ) : void {
150 $documentConnector = $this->getMockBuilder(arConnector::class)->getMock();
151 $criterionConnector = $this->getMockBuilder(arConnector::class)->getMock();
152
153 $documentConnector
154 ->expects($this->once())
155 ->method('read')
156 ->willReturnCallback(function () {
157 $object = new stdClass();
158
159 $object->id = 4711;
160 $object->title = 'phpunit';
161 $object->creation_ts = time();
162 $object->modification_ts = time();
163 $object->owner_usr_id = 6;
164 $object->last_modified_usr_id = 6;
165 $object->sorting = 10;
166 $object->text = 'HelloWorld';
167
168 return [$object];
169 });
170
171 $criterionConnector
172 ->expects($this->once())
173 ->method('readSet')
174 ->willReturnCallback(function () use ($criterionAssignment1, $criterionAssignment2, $criterionAssignment3) {
175 return [
176 [
177 'id' => $criterionAssignment1->getId(),
178 'doc_id' => 4711,
179 'criterion_id' => $criterionAssignment1->getCriterionId(),
180 'criterion_value' => $criterionAssignment1->getCriterionValue(),
181 ],
182 [
183 'id' => $criterionAssignment2->getId(),
184 'doc_id' => 4711,
185 'criterion_id' => $criterionAssignment2->getCriterionId(),
186 'criterion_value' => $criterionAssignment2->getCriterionValue(),
187 ],
188 [
189 'id' => $criterionAssignment3->getId(),
190 'doc_id' => 4711,
191 'criterion_id' => $criterionAssignment3->getCriterionId(),
192 'criterion_value' => $criterionAssignment3->getCriterionValue(),
193 ]
194 ];
195 });
196
197 arConnectorMap::register(new ilTermsOfServiceDocument(), $documentConnector);
199
200 $document = new ilTermsOfServiceDocument(4711);
201
202 $this->assertCount(3, $document->criteria());
203 }
204
216 ) : void {
217 $document = new ilTermsOfServiceDocument();
218 $document->attachCriterion($criterionAssignment1);
219 $document->attachCriterion($criterionAssignment2);
220 $document->attachCriterion($criterionAssignment3);
221
222 $this->assertCount(3, $document->criteria());
223 }
224
236 ) : void {
237 $document = new ilTermsOfServiceDocument();
238 $document->attachCriterion($criterionAssignment1);
239 $document->attachCriterion($criterionAssignment2);
240 $document->attachCriterion($criterionAssignment3);
241
242 $this->assertCount(3, $document->criteria());
243
244 $document->detachCriterion($criterionAssignment2);
245
246 $this->assertCount(2, $document->criteria());
247 }
248
261 ) : void {
262 $documentConnector = $this->getMockBuilder(arConnector::class)->getMock();
263
264 $document = new ilTermsOfServiceDocument();
265
266 $documentConnector
267 ->expects($this->exactly(2))
268 ->method('affectedRows')
269 ->willReturnOnConsecutiveCalls(0, 1);
270
271 $documentConnector
272 ->expects($this->once())
273 ->method('nextId')
274 ->willReturn(1);
275
276 $documentConnector
277 ->expects($this->once())
278 ->method('create');
279
280 arConnectorMap::register($document, $documentConnector);
281
282 $document->attachCriterion($criterionAssignment1);
283 $document->attachCriterion($criterionAssignment2);
284 $document->attachCriterion($criterionAssignment3);
285
286 $criterionAssignment1
287 ->expects($this->exactly(2))
288 ->method('store');
289
290 $criterionAssignment1
291 ->expects($this->once())
292 ->method('delete');
293
294 $criterionAssignment2
295 ->expects($this->once())
296 ->method('store');
297
298 $criterionAssignment2
299 ->expects($this->once())
300 ->method('delete');
301
302 $criterionAssignment3
303 ->expects($this->exactly(2))
304 ->method('store');
305
306 $criterionAssignment3
307 ->expects($this->once())
308 ->method('delete');
309
310 $this->assertCount(3, $document->criteria());
311
312 $document->store(); // 1 / 2 / 3
313
314 $document->detachCriterion($criterionAssignment2);
315
316 $document->store(); // 1 / 3
317
318 $this->assertCount(2, $document->criteria());
319
320 $document->detachCriterion($criterionAssignment1);
321 $document->detachCriterion($criterionAssignment3);
322
323 $this->assertCount(0, $document->criteria());
324
325 $document->delete();
326 }
327
333 {
334 $this->expectException(ilTermsOfServiceDuplicateCriterionAssignmentException::class);
335
336 $criterionAssignment1 = $this
337 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
338 ->disableOriginalConstructor()
339 ->setMethods(['getId', 'getCriterionValue', 'getCriterionId'])
340 ->getMock();
341
342 $criterionAssignment1
343 ->expects($this->any())
344 ->method('getId')
345 ->willReturn(0);
346
347 $criterionAssignment1
348 ->expects($this->any())
349 ->method('getCriterionId')
350 ->willReturn('usr_global_role');
351
352 $criterionAssignment1
353 ->expects($this->any())
354 ->method('getCriterionValue')
355 ->willReturn($this->getCriterionConfig(['role_id' => 4]));
356
357 $criterionAssignment2 = $this
358 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
359 ->disableOriginalConstructor()
360 ->setMethods(['getId', 'getCriterionValue', 'getCriterionId'])
361 ->getMock();
362
363 $criterionAssignment2
364 ->expects($this->any())
365 ->method('getId')
366 ->willReturn(0);
367
368 $criterionAssignment2
369 ->expects($this->any())
370 ->method('getCriterionId')
371 ->willReturn('usr_global_role');
372
373 $criterionAssignment2
374 ->expects($this->any())
375 ->method('getCriterionValue')
376 ->willReturn($this->getCriterionConfig(['role_id' => 4]));
377
378 $document = new ilTermsOfServiceDocument();
379
380 $document->attachCriterion($criterionAssignment1);
381 $document->attachCriterion($criterionAssignment2);
382 }
383
389 {
390 $this->expectException(ilTermsOfServiceDuplicateCriterionAssignmentException::class);
391
392 $criterionAssignment1 = $this
393 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
394 ->disableOriginalConstructor()
395 ->setMethods(['getId', 'getCriterionValue', 'getCriterionId'])
396 ->getMock();
397
398 $criterionAssignment1
399 ->expects($this->any())
400 ->method('getId')
401 ->willReturn(1);
402
403 $criterionAssignment1
404 ->expects($this->any())
405 ->method('getCriterionId')
406 ->willReturn('usr_global_role');
407
408 $criterionAssignment1
409 ->expects($this->any())
410 ->method('getCriterionValue')
411 ->willReturn($this->getCriterionConfig(['role_id' => 4]));
412
413 $criterionAssignment2 = $this
414 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
415 ->disableOriginalConstructor()
416 ->setMethods(['getId', 'getCriterionValue', 'getCriterionId'])
417 ->getMock();
418
419 $criterionAssignment2
420 ->expects($this->any())
421 ->method('getId')
422 ->willReturn(2);
423
424 $criterionAssignment2
425 ->expects($this->any())
426 ->method('getCriterionId')
427 ->willReturn('usr_global_role');
428
429 $criterionAssignment2
430 ->expects($this->any())
431 ->method('getCriterionValue')
432 ->willReturn($this->getCriterionConfig(['role_id' => 4]));
433
434 $document = new ilTermsOfServiceDocument();
435
436 $document->attachCriterion($criterionAssignment1);
437 $document->attachCriterion($criterionAssignment2);
438 }
439
444 {
445 $this->expectException(OutOfBoundsException::class);
446
447 $criterionAssignment1 = $this
448 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
449 ->disableOriginalConstructor()
450 ->setMethods(['getId', 'getCriterionValue', 'getCriterionId'])
451 ->getMock();
452
453 $criterionAssignment1
454 ->expects($this->any())
455 ->method('getId')
456 ->willReturn(1);
457
458 $criterionAssignment1
459 ->expects($this->any())
460 ->method('getCriterionId')
461 ->willReturn('usr_global_role');
462
463 $criterionAssignment1
464 ->expects($this->any())
465 ->method('getCriterionValue')
466 ->willReturn($this->getCriterionConfig(['role_id' => 4]));
467
468 $document = new ilTermsOfServiceDocument();
469
470 $document->detachCriterion($criterionAssignment1);
471 }
472}
An exception for terminatinating execution or to throw for unit testing.
static register(ActiveRecord $ar, arConnector $connector)
Class arConnector.
Class ilTermsOfServiceCriterionBaseTest.
Class ilTermsOfServiceDocumentTest.
testCriteriaCanBeAttachedToDocument(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3)
@dataProvider criteriaAssignmentProvider
testCriteriaCanBeAttachedToAndDetachedFromDocumentPersistently(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3)
@dataProvider criteriaAssignmentProvider
testDocumentModelCanBeBuiltFromArrayWithAttachedCriteriaBeingRead(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3)
@dataProvider criteriaAssignmentProvider
testCriteriaCanBeDetachedFromDocument(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3)
@dataProvider criteriaAssignmentProvider
testDocumentModelCanCreatedByIdWithAttachedCriteriaBeingRead(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3)
@dataProvider criteriaAssignmentProvider
Class ilTermsOfServiceDocument.