ILIAS  release_8 Revision v8.23
ilTermsOfServiceDocumentTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
28 {
29  public function criteriaAssignmentProvider(): array
30  {
31  $criterionAssignment1 = $this
32  ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
33  ->disableOriginalConstructor()
34  ->onlyMethods(['getCriterionValue', 'getCriterionId', 'store', 'delete'])
35  ->addMethods(['getId'])
36  ->getMock();
37 
38  $criterionAssignment1
39  ->method('getId')
40  ->willReturn(1);
41 
42  $criterionAssignment1
43  ->method('getCriterionId')
44  ->willReturn('usr_global_role');
45 
46  $criterionAssignment1
47  ->method('getCriterionValue')
48  ->willReturn($this->getCriterionConfig(['role_id' => 4]));
49 
50  $criterionAssignment2 = $this
51  ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
52  ->disableOriginalConstructor()
53  ->onlyMethods(['getCriterionValue', 'getCriterionId', 'store', 'delete'])
54  ->addMethods(['getId'])
55  ->getMock();
56 
57  $criterionAssignment2
58  ->method('getId')
59  ->willReturn(2);
60 
61  $criterionAssignment2
62  ->method('getCriterionId')
63  ->willReturn('usr_language');
64 
65  $criterionAssignment2
66  ->method('getCriterionValue')
67  ->willReturn($this->getCriterionConfig(['lng' => 'de']));
68 
69  $criterionAssignment3 = $this
70  ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
71  ->disableOriginalConstructor()
72  ->onlyMethods(['getCriterionValue', 'getCriterionId', 'store', 'delete'])
73  ->addMethods(['getId'])
74  ->getMock();
75 
76  $criterionAssignment3
77  ->method('getId')
78  ->willReturn(3);
79 
80  $criterionAssignment3
81  ->method('getCriterionId')
82  ->willReturn('usr_global_role');
83 
84  $criterionAssignment3
85  ->method('getCriterionValue')
86  ->willReturn($this->getCriterionConfig(['role_id' => 6]));
87 
88  return [
89  [$criterionAssignment1, $criterionAssignment2, $criterionAssignment3]
90  ];
91  }
92 
100  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
101  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
102  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3
103  ): void {
104  $documentConnector = $this->getMockBuilder(arConnector::class)->getMock();
105  $criterionConnector = $this->getMockBuilder(arConnector::class)->getMock();
106 
107  $criterionConnector
108  ->expects($this->once())
109  ->method('readSet')
110  ->willReturnCallback(function () use ($criterionAssignment1, $criterionAssignment2, $criterionAssignment3) {
111  return [
112  [
113  'id' => $criterionAssignment1->getId(),
114  'doc_id' => 4711,
115  'criterion_id' => $criterionAssignment1->getCriterionId(),
116  'criterion_value' => $criterionAssignment1->getCriterionValue()->toJson(),
117  ],
118  [
119  'id' => $criterionAssignment2->getId(),
120  'doc_id' => 4711,
121  'criterion_id' => $criterionAssignment2->getCriterionId(),
122  'criterion_value' => $criterionAssignment2->getCriterionValue()->toJson(),
123  ],
124  [
125  'id' => $criterionAssignment3->getId(),
126  'doc_id' => 4711,
127  'criterion_id' => $criterionAssignment3->getCriterionId(),
128  'criterion_value' => $criterionAssignment3->getCriterionValue()->toJson(),
129  ]
130  ];
131  });
132 
133  arConnectorMap::register(new ilTermsOfServiceDocument(), $documentConnector);
135 
136  $document = new ilTermsOfServiceDocument();
137 
138  $document->buildFromArray([
139  'id' => 4711,
140  'title' => 'phpunit',
141  ]);
142 
143  $this->assertCount(3, $document->criteria());
144  }
145 
153  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
154  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
155  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3
156  ): void {
157  $documentConnector = $this->getMockBuilder(arConnector::class)->getMock();
158  $criterionConnector = $this->getMockBuilder(arConnector::class)->getMock();
159 
160  $documentConnector
161  ->expects($this->once())
162  ->method('read')
163  ->willReturnCallback(function () {
164  $object = new stdClass();
165 
166  $object->id = 4711;
167  $object->title = 'phpunit';
168  $object->creation_ts = time();
169  $object->modification_ts = time();
170  $object->owner_usr_id = 6;
171  $object->last_modified_usr_id = 6;
172  $object->sorting = 10;
173  $object->text = 'HelloWorld';
174 
175  return [$object];
176  });
177 
178  $criterionConnector
179  ->expects($this->once())
180  ->method('readSet')
181  ->willReturnCallback(function () use ($criterionAssignment1, $criterionAssignment2, $criterionAssignment3) {
182  return [
183  [
184  'id' => $criterionAssignment1->getId(),
185  'doc_id' => 4711,
186  'criterion_id' => $criterionAssignment1->getCriterionId(),
187  'criterion_value' => $criterionAssignment1->getCriterionValue()->toJson(),
188  ],
189  [
190  'id' => $criterionAssignment2->getId(),
191  'doc_id' => 4711,
192  'criterion_id' => $criterionAssignment2->getCriterionId(),
193  'criterion_value' => $criterionAssignment2->getCriterionValue()->toJson(),
194  ],
195  [
196  'id' => $criterionAssignment3->getId(),
197  'doc_id' => 4711,
198  'criterion_id' => $criterionAssignment3->getCriterionId(),
199  'criterion_value' => $criterionAssignment3->getCriterionValue()->toJson(),
200  ]
201  ];
202  });
203 
204  arConnectorMap::register(new ilTermsOfServiceDocument(), $documentConnector);
206 
207  $document = new ilTermsOfServiceDocument(4711);
208 
209  $this->assertCount(3, $document->criteria());
210  }
211 
219  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
220  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
221  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3
222  ): void {
223  $document = new ilTermsOfServiceDocument();
224  $document->attachCriterion($criterionAssignment1);
225  $document->attachCriterion($criterionAssignment2);
226  $document->attachCriterion($criterionAssignment3);
227 
228  $this->assertCount(3, $document->criteria());
229  }
230 
238  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
239  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
240  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3
241  ): void {
242  $document = new ilTermsOfServiceDocument();
243  $document->attachCriterion($criterionAssignment1);
244  $document->attachCriterion($criterionAssignment2);
245  $document->attachCriterion($criterionAssignment3);
246 
247  $this->assertCount(3, $document->criteria());
248 
249  $document->detachCriterion($criterionAssignment2);
250  $this->assertCount(2, $document->criteria());
251  }
252 
260  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
261  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
262  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3
263  ): void {
264  $documentConnector = $this->getMockBuilder(arConnector::class)->getMock();
265 
266  $document = new ilTermsOfServiceDocument();
267 
268  $documentConnector
269  ->expects($this->exactly(2))
270  ->method('affectedRows')
271  ->willReturnOnConsecutiveCalls(0, 1);
272 
273  $documentConnector
274  ->expects($this->once())
275  ->method('nextId')
276  ->willReturn(1);
277 
278  $documentConnector
279  ->expects($this->once())
280  ->method('create');
281 
282  arConnectorMap::register($document, $documentConnector);
283 
284  $document->attachCriterion($criterionAssignment1);
285  $document->attachCriterion($criterionAssignment2);
286  $document->attachCriterion($criterionAssignment3);
287 
288  $criterionAssignment1
289  ->expects($this->exactly(2))
290  ->method('store');
291 
292  $criterionAssignment1
293  ->expects($this->once())
294  ->method('delete');
295 
296  $criterionAssignment2
297  ->expects($this->once())
298  ->method('store');
299 
300  $criterionAssignment2
301  ->expects($this->once())
302  ->method('delete');
303 
304  $criterionAssignment3
305  ->expects($this->exactly(2))
306  ->method('store');
307 
308  $criterionAssignment3
309  ->expects($this->once())
310  ->method('delete');
311 
312  $this->assertCount(3, $document->criteria());
313 
314  $document->store(); // 1 / 2 / 3
315 
316  $document->detachCriterion($criterionAssignment2);
317 
318  $document->store(); // 1 / 3
319 
320  $this->assertCount(2, $document->criteria());
321 
322  $document->detachCriterion($criterionAssignment1);
323  $document->detachCriterion($criterionAssignment3);
324 
325  $this->assertCount(0, $document->criteria());
326 
327  $document->delete();
328  }
329 
331  {
332  $this->expectException(ilTermsOfServiceDuplicateCriterionAssignmentException::class);
333 
334  $criterionAssignment1 = $this
335  ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
336  ->disableOriginalConstructor()
337  ->onlyMethods(['getCriterionValue', 'getCriterionId'])
338  ->addMethods(['getId'])
339  ->getMock();
340 
341  $criterionAssignment1
342  ->method('getId')
343  ->willReturn(0);
344 
345  $criterionAssignment1
346  ->method('getCriterionId')
347  ->willReturn('usr_global_role');
348 
349  $criterionAssignment1
350  ->method('getCriterionValue')
351  ->willReturn($this->getCriterionConfig(['role_id' => 4]));
352 
353  $criterionAssignment2 = $this
354  ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
355  ->disableOriginalConstructor()
356  ->onlyMethods(['getCriterionValue', 'getCriterionId'])
357  ->addMethods(['getId'])
358  ->getMock();
359 
360  $criterionAssignment2
361  ->method('getId')
362  ->willReturn(0);
363 
364  $criterionAssignment2
365  ->method('getCriterionId')
366  ->willReturn('usr_global_role');
367 
368  $criterionAssignment2
369  ->method('getCriterionValue')
370  ->willReturn($this->getCriterionConfig(['role_id' => 4]));
371 
372  $document = new ilTermsOfServiceDocument();
373 
374  $document->attachCriterion($criterionAssignment1);
375  $document->attachCriterion($criterionAssignment2);
376  }
377 
379  {
380  $this->expectException(ilTermsOfServiceDuplicateCriterionAssignmentException::class);
381 
382  $criterionAssignment1 = $this
383  ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
384  ->disableOriginalConstructor()
385  ->onlyMethods(['getCriterionValue', 'getCriterionId'])
386  ->addMethods(['getId'])
387  ->getMock();
388 
389  $criterionAssignment1
390  ->method('getId')
391  ->willReturn(1);
392 
393  $criterionAssignment1
394  ->method('getCriterionId')
395  ->willReturn('usr_global_role');
396 
397  $criterionAssignment1
398  ->method('getCriterionValue')
399  ->willReturn($this->getCriterionConfig(['role_id' => 4]));
400 
401  $criterionAssignment2 = $this
402  ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
403  ->disableOriginalConstructor()
404  ->onlyMethods(['getCriterionValue', 'getCriterionId'])
405  ->addMethods(['getId'])
406  ->getMock();
407 
408  $criterionAssignment2
409  ->method('getId')
410  ->willReturn(2);
411 
412  $criterionAssignment2
413  ->method('getCriterionId')
414  ->willReturn('usr_global_role');
415 
416  $criterionAssignment2
417  ->method('getCriterionValue')
418  ->willReturn($this->getCriterionConfig(['role_id' => 4]));
419 
420  $document = new ilTermsOfServiceDocument();
421 
422  $document->attachCriterion($criterionAssignment1);
423  $document->attachCriterion($criterionAssignment2);
424  }
425 
427  {
428  $this->expectException(OutOfBoundsException::class);
429 
430  $criterionAssignment1 = $this
431  ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
432  ->disableOriginalConstructor()
433  ->onlyMethods(['getCriterionValue', 'getCriterionId'])
434  ->addMethods(['getId'])
435  ->getMock();
436 
437  $criterionAssignment1
438  ->method('getId')
439  ->willReturn(1);
440 
441  $criterionAssignment1
442  ->method('getCriterionId')
443  ->willReturn('usr_global_role');
444 
445  $criterionAssignment1
446  ->method('getCriterionValue')
447  ->willReturn($this->getCriterionConfig(['role_id' => 4]));
448 
449  $document = new ilTermsOfServiceDocument();
450 
451  $document->detachCriterion($criterionAssignment1);
452  }
453 }
testCriteriaCanBeAttachedToAndDetachedFromDocumentPersistently(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3)
criteriaAssignmentProvider
static register(ActiveRecord $ar, arConnector $connector)
Class ilTermsOfServiceCriterionBaseTest.
Class ilTermsOfServiceDocumentTest.
testCriteriaCanBeDetachedFromDocument(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3)
criteriaAssignmentProvider
testDocumentModelCanBeBuiltFromArrayWithAttachedCriteriaBeingRead(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3)
criteriaAssignmentProvider
Class ilTermsOfServiceDocument.
testDocumentModelCanBeCreatedByIdWithAttachedCriteriaBeingRead(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3)
criteriaAssignmentProvider
testCriteriaCanBeAttachedToDocument(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3)
criteriaAssignmentProvider