ILIAS  release_7 Revision v7.30-3-g800a261c036
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  ->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 
95  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
96  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
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 
149  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
150  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
151  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3
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 
216  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
217  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
218  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3
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 
236  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
237  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
238  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3
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 
261  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment1,
262  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment2,
263  ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment3
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 }
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