ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
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 
92  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
93  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
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 
146  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
147  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
148  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3
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 
213  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
214  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
215  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3
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 
233  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
234  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
235  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3
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 
258  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
259  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
260  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3
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 }
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
testDocumentModelCanCreatedByIdWithAttachedCriteriaBeingRead(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3)
criteriaAssignmentProvider
testDocumentModelCanBeBuiltFromArrayWithAttachedCriteriaBeingRead(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3)
criteriaAssignmentProvider
Class ilTermsOfServiceDocument.
testCriteriaCanBeAttachedToDocument(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2, ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3)
criteriaAssignmentProvider