ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
ilTermsOfServiceCriterionFormGUITest.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  {
15  $document = $this
16  ->getMockBuilder(ilTermsOfServiceDocument::class)
17  ->disableOriginalConstructor()
18  ->getMock();
19 
20  $criterionAssignment = $this
21  ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
22  ->disableOriginalConstructor()
23  ->setMethods(['getId', 'getCriterionId'])
24  ->getMock();
25 
26  $criterionAssignment
27  ->expects($this->any())
28  ->method('getId')
29  ->willReturn(0);
30 
31  $criterionAssignment
32  ->expects($this->any())
33  ->method('getCriterionId')
34  ->willReturn('');
35 
36  $criterionTypeFactory = $this
37  ->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)
38  ->getMock();
39 
40  $criterionType1 = $this
41  ->getMockBuilder(ilTermsOfServiceCriterionType::class)
42  ->getMock();
43 
44  $criterionType1
45  ->expects($this->any())
46  ->method('getTypeIdent')
47  ->willReturn('dummy1');
48 
49  $criterionType1
50  ->expects($this->any())
51  ->method('ui')
52  ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
53 
54  $criterionType2 = $this
55  ->getMockBuilder(ilTermsOfServiceCriterionType::class)
56  ->getMock();
57 
58  $criterionType2
59  ->expects($this->any())
60  ->method('getTypeIdent')
61  ->willReturn('dummy2');
62 
63  $criterionType2
64  ->expects($this->any())
65  ->method('ui')
66  ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
67 
68  $criterionTypeFactory
69  ->expects($this->once())
70  ->method('getTypesByIdentMap')
71  ->willReturn([
72  $criterionType1,
73  $criterionType2
74  ]);
75 
76  $user = $this
77  ->getMockBuilder(ilObjUser::class)
78  ->disableOriginalConstructor()
79  ->getMock();
80 
82  $document,
83  $criterionAssignment,
84  $criterionTypeFactory,
85  $user,
86  '',
87  'save',
88  'cancel'
89  );
90 
91  $this->assertEquals($criterionType1->getTypeIdent(), $form->getItemByPostVar('criterion')->getValue());
92  }
93 
98  {
99  $document = $this
100  ->getMockBuilder(ilTermsOfServiceDocument::class)
101  ->disableOriginalConstructor()
102  ->getMock();
103 
104  $criterionAssignment = $this
105  ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
106  ->disableOriginalConstructor()
107  ->setMethods(['getId', 'getCriterionId', 'getCriterionValue'])
108  ->getMock();
109 
110  $criterionAssignment
111  ->expects($this->any())
112  ->method('getId')
113  ->willReturn(1);
114 
115  $criterionAssignment
116  ->expects($this->any())
117  ->method('getCriterionId')
118  ->willReturn('dummy2');
119 
120  $criterionAssignment
121  ->expects($this->any())
122  ->method('getCriterionValue')
123  ->willReturn(new ilTermsOfServiceCriterionConfig([]));
124 
125  $criterionTypeFactory = $this
126  ->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)
127  ->getMock();
128 
129  $criterionType1 = $this
130  ->getMockBuilder(ilTermsOfServiceCriterionType::class)
131  ->getMock();
132 
133  $criterionType1
134  ->expects($this->any())
135  ->method('getTypeIdent')
136  ->willReturn('dummy1');
137 
138  $criterionType1
139  ->expects($this->any())
140  ->method('ui')
141  ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
142 
143  $criterionType2 = $this
144  ->getMockBuilder(ilTermsOfServiceCriterionType::class)
145  ->getMock();
146 
147  $criterionType2
148  ->expects($this->any())
149  ->method('getTypeIdent')
150  ->willReturn('dummy2');
151 
152  $criterionType2
153  ->expects($this->any())
154  ->method('ui')
155  ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
156 
157  $criterionTypeFactory
158  ->expects($this->once())
159  ->method('getTypesByIdentMap')
160  ->willReturn([
161  $criterionType1,
162  $criterionType2
163  ]);
164 
165  $user = $this
166  ->getMockBuilder(ilObjUser::class)
167  ->disableOriginalConstructor()
168  ->getMock();
169 
171  $document,
172  $criterionAssignment,
173  $criterionTypeFactory,
174  $user,
175  '',
176  'save',
177  'cancel'
178  );
179 
180  $this->assertEquals($criterionType2->getTypeIdent(), $form->getItemByPostVar('criterion')->getValue());
181  }
182 
187  {
188  $document = $this
189  ->getMockBuilder(ilTermsOfServiceDocument::class)
190  ->disableOriginalConstructor()
191  ->getMock();
192 
193  $document
194  ->expects($this->once())
195  ->method('save');
196 
197  $document
198  ->expects($this->once())
199  ->method('attachCriterion');
200 
201  $criterionAssignment = $this
202  ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
203  ->disableOriginalConstructor()
204  ->setMethods(['getId', 'getCriterionId', 'getCriterionValue'])
205  ->getMock();
206 
207  $criterionAssignment
208  ->expects($this->any())
209  ->method('getId')
210  ->willReturn(0);
211 
212  $criterionAssignment
213  ->expects($this->any())
214  ->method('getCriterionId')
215  ->willReturn('');
216 
217  $criterionTypeFactory = $this
218  ->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)
219  ->getMock();
220 
221  $criterionType1 = $this
222  ->getMockBuilder(ilTermsOfServiceCriterionType::class)
223  ->getMock();
224 
225  $criterionType1
226  ->expects($this->any())
227  ->method('getTypeIdent')
228  ->willReturn('dummy1');
229 
230  $criterionType1
231  ->expects($this->any())
232  ->method('ui')
233  ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
234 
235  $criterionType2 = $this
236  ->getMockBuilder(ilTermsOfServiceCriterionType::class)
237  ->getMock();
238 
239  $criterionType2
240  ->expects($this->any())
241  ->method('getTypeIdent')
242  ->willReturn('dummy2');
243 
244  $criterionType2
245  ->expects($this->any())
246  ->method('ui')
247  ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
248 
249  $criterionTypeFactory
250  ->expects($this->once())
251  ->method('getTypesByIdentMap')
252  ->willReturn([
253  $criterionType1,
254  $criterionType2
255  ]);
256 
257  $criterionTypeFactory
258  ->expects($this->once())
259  ->method('findByTypeIdent')
260  ->willReturn($criterionType1);
261 
262  $user = $this
263  ->getMockBuilder(ilObjUser::class)
264  ->disableOriginalConstructor()
265  ->setMethods(['getId'])
266  ->getMock();
267 
268  $user
269  ->expects($this->any())
270  ->method('getId')
271  ->willReturn(6);
272 
273  $form = $this->getMockBuilder(ilTermsOfServiceCriterionFormGUI::class)
274  ->setConstructorArgs([
275  $document,
276  $criterionAssignment,
277  $criterionTypeFactory,
278  $user,
279  'action',
280  'save',
281  'cancel'
282  ])
283  ->setMethods(['checkInput'])
284  ->getMock();
285 
286  $form
287  ->expects($this->once())
288  ->method('checkInput')
289  ->willReturn(true);
290 
291  $_POST = [
292  'criterion' => $criterionType1->getTypeIdent()
293  ];
294 
295  $form->setCheckInputCalled(true);
296 
297  $this->assertTrue($form->saveObject());
298  $this->assertFalse($form->hasTranslatedError());
299  $this->assertEmpty($form->getTranslatedError());
300  }
301 
306  {
307  $lng = $this->getLanguageMock();
308 
309  $lng
310  ->expects($this->any())
311  ->method('txt')
312  ->willReturn('translation');
313 
314  $this->setGlobalVariable('lng', $lng);
315 
316  $document = $this
317  ->getMockBuilder(ilTermsOfServiceDocument::class)
318  ->disableOriginalConstructor()
319  ->getMock();
320 
321  $document
322  ->expects($this->never())
323  ->method('save');
324 
325  $document
326  ->expects($this->never())
327  ->method('attachCriterion');
328 
329  $criterionAssignment = $this
330  ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
331  ->disableOriginalConstructor()
332  ->setMethods(['getId', 'getCriterionId', 'getCriterionValue'])
333  ->getMock();
334 
335  $criterionAssignment
336  ->expects($this->any())
337  ->method('getId')
338  ->willReturn(1);
339 
340  $criterionAssignment
341  ->expects($this->any())
342  ->method('getCriterionId')
343  ->willReturn('usr_global_role');
344 
345  $criterionAssignment
346  ->expects($this->any())
347  ->method('getCriterionValue')
348  ->willReturn(new ilTermsOfServiceCriterionConfig(['role_id' => 4]));
349 
350  $criterionTypeFactory = $this
351  ->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)
352  ->getMock();
353 
354  $criterionType1 = $this
355  ->getMockBuilder(ilTermsOfServiceCriterionType::class)
356  ->getMock();
357 
358  $criterionType1
359  ->expects($this->any())
360  ->method('getTypeIdent')
361  ->willReturn('dummy1');
362 
363  $criterionType1
364  ->expects($this->any())
365  ->method('ui')
366  ->willReturn($this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock());
367 
368  $criterionType2 = $this
369  ->getMockBuilder(ilTermsOfServiceCriterionType::class)
370  ->getMock();
371 
372  $criterionType2
373  ->expects($this->any())
374  ->method('getTypeIdent')
375  ->willReturn('dummy2');
376 
377  $criterionTypeGui2 = $this->getMockBuilder(ilTermsOfServiceCriterionTypeGUI::class)->getMock();
378 
379  $criterionTypeGui2
380  ->expects($this->any())
381  ->method('getConfigByForm')
382  ->willReturn($criterionAssignment->getCriterionValue());
383 
384  $criterionType2
385  ->expects($this->any())
386  ->method('ui')
387  ->willReturn($criterionTypeGui2);
388 
389  $criterionTypeFactory
390  ->expects($this->once())
391  ->method('getTypesByIdentMap')
392  ->willReturn([
393  $criterionType1,
394  $criterionType2
395  ]);
396 
397  $criterionTypeFactory
398  ->expects($this->exactly(2))
399  ->method('findByTypeIdent')
400  ->willReturnOnConsecutiveCalls(
401  $this->throwException(new ilTermsOfServiceCriterionTypeNotFoundException('')),
402  $criterionType1
403  );
404 
405  $anotherCriterionAssignment = $this
406  ->getMockBuilder(ilTermsOfServiceDocumentCriterionAssignment::class)
407  ->disableOriginalConstructor()
408  ->setMethods(['getId', 'getCriterionId', 'getCriterionValue'])
409  ->getMock();
410 
411  $anotherCriterionAssignment
412  ->expects($this->any())
413  ->method('getId')
414  ->willReturn(2);
415 
416  $anotherCriterionAssignment
417  ->expects($this->any())
418  ->method('getCriterionId')
419  ->willReturn('usr_global_role');
420 
421  $anotherCriterionAssignment
422  ->expects($this->any())
423  ->method('getCriterionValue')
424  ->willReturn(new ilTermsOfServiceCriterionConfig(['role_id' => 4]));
425 
426  $document
427  ->expects($this->once())
428  ->method('criteria')
429  ->willReturn([$anotherCriterionAssignment]);
430 
431  $user = $this
432  ->getMockBuilder(ilObjUser::class)
433  ->disableOriginalConstructor()
434  ->setMethods(['getId'])
435  ->getMock();
436 
437  $user
438  ->expects($this->any())
439  ->method('getId')
440  ->willReturn(6);
441 
442  $form = $this->getMockBuilder(ilTermsOfServiceCriterionFormGUI::class)
443  ->setConstructorArgs([
444  $document,
445  $criterionAssignment,
446  $criterionTypeFactory,
447  $user,
448  'action',
449  'save',
450  'cancel'
451  ])
452  ->setMethods(['checkInput'])
453  ->getMock();
454 
455  $form
456  ->expects($this->exactly(2))
457  ->method('checkInput')
458  ->willReturn(true);
459 
460  $_POST = [
461  'criterion' => $criterionType1->getTypeIdent()
462  ];
463 
464  $form->setCheckInputCalled(true);
465 
466  $this->assertFalse(
467  $form->saveObject(),
468  'Failed asserting form cannot be saved selected criterion type was not found'
469  );
470  $this->assertTrue($form->hasTranslatedError());
471  $this->assertNotEmpty($form->getTranslatedError());
472 
473  $this->assertFalse(
474  $form->saveObject(),
475  'Failed asserting form cannot be saved selected criterion type was already assigned to document'
476  );
477  $this->assertTrue($form->hasTranslatedError());
478  $this->assertNotEmpty($form->getTranslatedError());
479  }
480 }
setGlobalVariable(string $name, $value)
Class ilTermsOfServiceCriterionFormGUI.
Class ilTermsOfServiceCriterionConfig.
Class ilTermsOfServiceBaseTest.
Class ilTermsOfServiceCriterionFormGUITest.
$lng
$_POST["username"]