ILIAS  release_7 Revision v7.30-3-g800a261c036
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 ->onlyMethods(['getCriterionValue', 'getCriterionId', 'store', 'delete'])
20 ->addMethods(['getId'])
21 ->getMock();
22
23 $criterionAssignment1
24 ->expects($this->any())
25 ->method('getId')
26 ->willReturn(1);
27
28 $criterionAssignment1
29 ->expects($this->any())
30 ->method('getCriterionId')
31 ->willReturn('usr_global_role');
32
33 $criterionAssignment1
34 ->expects($this->any())
35 ->method('getCriterionValue')
36 ->willReturn($this->getCriterionConfig(['role_id' => 4]));
37
38 $criterionAssignment2 = $this
39 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
40 ->disableOriginalConstructor()
41 ->onlyMethods(['getCriterionValue', 'getCriterionId', 'store', 'delete'])
42 ->addMethods(['getId'])
43 ->getMock();
44
45 $criterionAssignment2
46 ->expects($this->any())
47 ->method('getId')
48 ->willReturn(2);
49
50 $criterionAssignment2
51 ->expects($this->any())
52 ->method('getCriterionId')
53 ->willReturn('usr_language');
54
55 $criterionAssignment2
56 ->expects($this->any())
57 ->method('getCriterionValue')
58 ->willReturn($this->getCriterionConfig(['lng' => 'de']));
59
60 $criterionAssignment3 = $this
61 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
62 ->disableOriginalConstructor()
63 ->onlyMethods(['getCriterionValue', 'getCriterionId', 'store', 'delete'])
64 ->addMethods(['getId'])
65 ->getMock();
66
67 $criterionAssignment3
68 ->expects($this->any())
69 ->method('getId')
70 ->willReturn(3);
71
72 $criterionAssignment3
73 ->expects($this->any())
74 ->method('getCriterionId')
75 ->willReturn('usr_global_role');
76
77 $criterionAssignment3
78 ->expects($this->any())
79 ->method('getCriterionValue')
80 ->willReturn($this->getCriterionConfig(['role_id' => 6]));
81
82 return [
83 [$criterionAssignment1, $criterionAssignment2, $criterionAssignment3]
84 ];
85 }
86
98 ) : void {
99 $documentConnector = $this->getMockBuilder(arConnector::class)->getMock();
100 $criterionConnector = $this->getMockBuilder(arConnector::class)->getMock();
101
102 $criterionConnector
103 ->expects($this->once())
104 ->method('readSet')
105 ->willReturnCallback(function () use ($criterionAssignment1, $criterionAssignment2, $criterionAssignment3) {
106 return [
107 [
108 'id' => $criterionAssignment1->getId(),
109 'doc_id' => 4711,
110 'criterion_id' => $criterionAssignment1->getCriterionId(),
111 'criterion_value' => $criterionAssignment1->getCriterionValue(),
112 ],
113 [
114 'id' => $criterionAssignment2->getId(),
115 'doc_id' => 4711,
116 'criterion_id' => $criterionAssignment2->getCriterionId(),
117 'criterion_value' => $criterionAssignment2->getCriterionValue(),
118 ],
119 [
120 'id' => $criterionAssignment3->getId(),
121 'doc_id' => 4711,
122 'criterion_id' => $criterionAssignment3->getCriterionId(),
123 'criterion_value' => $criterionAssignment3->getCriterionValue(),
124 ]
125 ];
126 });
127
128 arConnectorMap::register(new ilTermsOfServiceDocument(), $documentConnector);
130
131 $document = new ilTermsOfServiceDocument();
132
133 $document->buildFromArray([
134 'id' => 4711,
135 'title' => 'phpunit',
136 ]);
137
138 $this->assertCount(3, $document->criteria());
139 }
140
152 ) : void {
153 $documentConnector = $this->getMockBuilder(arConnector::class)->getMock();
154 $criterionConnector = $this->getMockBuilder(arConnector::class)->getMock();
155
156 $documentConnector
157 ->expects($this->once())
158 ->method('read')
159 ->willReturnCallback(function () {
160 $object = new stdClass();
161
162 $object->id = 4711;
163 $object->title = 'phpunit';
164 $object->creation_ts = time();
165 $object->modification_ts = time();
166 $object->owner_usr_id = 6;
167 $object->last_modified_usr_id = 6;
168 $object->sorting = 10;
169 $object->text = 'HelloWorld';
170
171 return [$object];
172 });
173
174 $criterionConnector
175 ->expects($this->once())
176 ->method('readSet')
177 ->willReturnCallback(function () use ($criterionAssignment1, $criterionAssignment2, $criterionAssignment3) {
178 return [
179 [
180 'id' => $criterionAssignment1->getId(),
181 'doc_id' => 4711,
182 'criterion_id' => $criterionAssignment1->getCriterionId(),
183 'criterion_value' => $criterionAssignment1->getCriterionValue(),
184 ],
185 [
186 'id' => $criterionAssignment2->getId(),
187 'doc_id' => 4711,
188 'criterion_id' => $criterionAssignment2->getCriterionId(),
189 'criterion_value' => $criterionAssignment2->getCriterionValue(),
190 ],
191 [
192 'id' => $criterionAssignment3->getId(),
193 'doc_id' => 4711,
194 'criterion_id' => $criterionAssignment3->getCriterionId(),
195 'criterion_value' => $criterionAssignment3->getCriterionValue(),
196 ]
197 ];
198 });
199
200 arConnectorMap::register(new ilTermsOfServiceDocument(), $documentConnector);
202
203 $document = new ilTermsOfServiceDocument(4711);
204
205 $this->assertCount(3, $document->criteria());
206 }
207
219 ) : void {
220 $document = new ilTermsOfServiceDocument();
221 $document->attachCriterion($criterionAssignment1);
222 $document->attachCriterion($criterionAssignment2);
223 $document->attachCriterion($criterionAssignment3);
224
225 $this->assertCount(3, $document->criteria());
226 }
227
239 ) : void {
240 $document = new ilTermsOfServiceDocument();
241 $document->attachCriterion($criterionAssignment1);
242 $document->attachCriterion($criterionAssignment2);
243 $document->attachCriterion($criterionAssignment3);
244
245 $this->assertCount(3, $document->criteria());
246
247 $document->detachCriterion($criterionAssignment2);
248
249 $this->assertCount(2, $document->criteria());
250 }
251
264 ) : void {
265 $documentConnector = $this->getMockBuilder(arConnector::class)->getMock();
266
267 $document = new ilTermsOfServiceDocument();
268
269 $documentConnector
270 ->expects($this->exactly(2))
271 ->method('affectedRows')
272 ->willReturnOnConsecutiveCalls(0, 1);
273
274 $documentConnector
275 ->expects($this->once())
276 ->method('nextId')
277 ->willReturn(1);
278
279 $documentConnector
280 ->expects($this->once())
281 ->method('create');
282
283 arConnectorMap::register($document, $documentConnector);
284
285 $document->attachCriterion($criterionAssignment1);
286 $document->attachCriterion($criterionAssignment2);
287 $document->attachCriterion($criterionAssignment3);
288
289 $criterionAssignment1
290 ->expects($this->exactly(2))
291 ->method('store');
292
293 $criterionAssignment1
294 ->expects($this->once())
295 ->method('delete');
296
297 $criterionAssignment2
298 ->expects($this->once())
299 ->method('store');
300
301 $criterionAssignment2
302 ->expects($this->once())
303 ->method('delete');
304
305 $criterionAssignment3
306 ->expects($this->exactly(2))
307 ->method('store');
308
309 $criterionAssignment3
310 ->expects($this->once())
311 ->method('delete');
312
313 $this->assertCount(3, $document->criteria());
314
315 $document->store(); // 1 / 2 / 3
316
317 $document->detachCriterion($criterionAssignment2);
318
319 $document->store(); // 1 / 3
320
321 $this->assertCount(2, $document->criteria());
322
323 $document->detachCriterion($criterionAssignment1);
324 $document->detachCriterion($criterionAssignment3);
325
326 $this->assertCount(0, $document->criteria());
327
328 $document->delete();
329 }
330
336 {
337 $this->expectException(ilTermsOfServiceDuplicateCriterionAssignmentException::class);
338
339 $criterionAssignment1 = $this
340 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
341 ->disableOriginalConstructor()
342 ->onlyMethods(['getCriterionValue', 'getCriterionId'])
343 ->addMethods(['getId'])
344 ->getMock();
345
346 $criterionAssignment1
347 ->expects($this->any())
348 ->method('getId')
349 ->willReturn(0);
350
351 $criterionAssignment1
352 ->expects($this->any())
353 ->method('getCriterionId')
354 ->willReturn('usr_global_role');
355
356 $criterionAssignment1
357 ->expects($this->any())
358 ->method('getCriterionValue')
359 ->willReturn($this->getCriterionConfig(['role_id' => 4]));
360
361 $criterionAssignment2 = $this
362 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
363 ->disableOriginalConstructor()
364 ->onlyMethods(['getCriterionValue', 'getCriterionId'])
365 ->addMethods(['getId'])
366 ->getMock();
367
368 $criterionAssignment2
369 ->expects($this->any())
370 ->method('getId')
371 ->willReturn(0);
372
373 $criterionAssignment2
374 ->expects($this->any())
375 ->method('getCriterionId')
376 ->willReturn('usr_global_role');
377
378 $criterionAssignment2
379 ->expects($this->any())
380 ->method('getCriterionValue')
381 ->willReturn($this->getCriterionConfig(['role_id' => 4]));
382
383 $document = new ilTermsOfServiceDocument();
384
385 $document->attachCriterion($criterionAssignment1);
386 $document->attachCriterion($criterionAssignment2);
387 }
388
394 {
395 $this->expectException(ilTermsOfServiceDuplicateCriterionAssignmentException::class);
396
397 $criterionAssignment1 = $this
398 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
399 ->disableOriginalConstructor()
400 ->onlyMethods(['getCriterionValue', 'getCriterionId'])
401 ->addMethods(['getId'])
402 ->getMock();
403
404 $criterionAssignment1
405 ->expects($this->any())
406 ->method('getId')
407 ->willReturn(1);
408
409 $criterionAssignment1
410 ->expects($this->any())
411 ->method('getCriterionId')
412 ->willReturn('usr_global_role');
413
414 $criterionAssignment1
415 ->expects($this->any())
416 ->method('getCriterionValue')
417 ->willReturn($this->getCriterionConfig(['role_id' => 4]));
418
419 $criterionAssignment2 = $this
420 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
421 ->disableOriginalConstructor()
422 ->onlyMethods(['getCriterionValue', 'getCriterionId'])
423 ->addMethods(['getId'])
424 ->getMock();
425
426 $criterionAssignment2
427 ->expects($this->any())
428 ->method('getId')
429 ->willReturn(2);
430
431 $criterionAssignment2
432 ->expects($this->any())
433 ->method('getCriterionId')
434 ->willReturn('usr_global_role');
435
436 $criterionAssignment2
437 ->expects($this->any())
438 ->method('getCriterionValue')
439 ->willReturn($this->getCriterionConfig(['role_id' => 4]));
440
441 $document = new ilTermsOfServiceDocument();
442
443 $document->attachCriterion($criterionAssignment1);
444 $document->attachCriterion($criterionAssignment2);
445 }
446
451 {
452 $this->expectException(OutOfBoundsException::class);
453
454 $criterionAssignment1 = $this
455 ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
456 ->disableOriginalConstructor()
457 ->onlyMethods(['getCriterionValue', 'getCriterionId'])
458 ->addMethods(['getId'])
459 ->getMock();
460
461 $criterionAssignment1
462 ->expects($this->any())
463 ->method('getId')
464 ->willReturn(1);
465
466 $criterionAssignment1
467 ->expects($this->any())
468 ->method('getCriterionId')
469 ->willReturn('usr_global_role');
470
471 $criterionAssignment1
472 ->expects($this->any())
473 ->method('getCriterionValue')
474 ->willReturn($this->getCriterionConfig(['role_id' => 4]));
475
476 $document = new ilTermsOfServiceDocument();
477
478 $document->detachCriterion($criterionAssignment1);
479 }
480}
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.