ILIAS  release_8 Revision v8.24
ilStudyProgrammeValidityOfAchievedQualificationSettingsTest.php
Go to the documentation of this file.
1<?php
2
3declare(strict_types=1);
4
21use PHPUnit\Framework\TestCase;
22
24{
27 private const INVALID_QUALIFICATION_PERIOD = -1;
28 private const VALID_QUALIFICATION_DATE = '2019-02-14';
29 private const VALID_RESTART_PERIOD_1 = 1;
30 private const VALID_RESTART_PERIOD_2 = 2;
31 private const INVALID_RESTART_PERIOD = -1;
32
33 public function testSuccessfulCreate(): void
34 {
36 self::VALID_QUALIFICATION_PERIOD_1,
37 new DateTimeImmutable(self::VALID_QUALIFICATION_DATE),
38 self::VALID_RESTART_PERIOD_1,
39 true
40 );
41
42 $this->assertEquals(self::VALID_QUALIFICATION_PERIOD_1, $obj->getQualificationPeriod());
43 $this->assertEquals(
44 self::VALID_QUALIFICATION_DATE,
45 $obj->getQualificationDate()->format('Y-m-d')
46 );
47 $this->assertEquals(self::VALID_RESTART_PERIOD_1, $obj->getRestartPeriod());
48 }
49
51 {
52 try {
54 self::INVALID_QUALIFICATION_PERIOD,
55 new DateTimeImmutable(self::VALID_QUALIFICATION_DATE),
56 self::VALID_RESTART_PERIOD_1,
57 true
58 );
59 $this->fail();
60 } catch (InvalidArgumentException $e) {
61 $this->assertTrue(true);
62 }
63 }
64
66 {
67 try {
69 self::VALID_QUALIFICATION_PERIOD_1,
70 new DateTimeImmutable(self::VALID_QUALIFICATION_DATE),
71 self::INVALID_RESTART_PERIOD,
72 true
73 );
74 $this->fail();
75 } catch (InvalidArgumentException $e) {
76 $this->assertTrue(true);
77 }
78 }
79
81 {
83 self::VALID_QUALIFICATION_PERIOD_1,
84 new DateTimeImmutable(self::VALID_QUALIFICATION_DATE),
85 self::VALID_RESTART_PERIOD_1,
86 true
87 );
88
89 $new = $obj->withQualificationPeriod(self::VALID_QUALIFICATION_PERIOD_2);
90
91 $this->assertEquals(self::VALID_QUALIFICATION_PERIOD_1, $obj->getQualificationPeriod());
92 $this->assertEquals(self::VALID_QUALIFICATION_PERIOD_2, $new->getQualificationPeriod());
93 }
94
95 public function testFailWithQualificationPeriod(): void
96 {
98 self::VALID_QUALIFICATION_PERIOD_1,
99 new DateTimeImmutable(self::VALID_QUALIFICATION_DATE),
100 self::VALID_RESTART_PERIOD_1,
101 true
102 );
103
104 try {
105 $obj->withQualificationPeriod(self::INVALID_QUALIFICATION_PERIOD);
106 $this->fail();
107 } catch (InvalidArgumentException $e) {
108 $this->assertTrue(true);
109 }
110 }
111
112 public function testSuccessfulWithRestartPeriod(): void
113 {
115 self::VALID_QUALIFICATION_PERIOD_1,
116 new DateTimeImmutable(self::VALID_QUALIFICATION_DATE),
117 self::VALID_RESTART_PERIOD_1,
118 true
119 );
120
121 $new = $obj->withRestartPeriod(self::VALID_RESTART_PERIOD_2);
122
123 $this->assertEquals(self::VALID_RESTART_PERIOD_1, $obj->getRestartPeriod());
124 $this->assertEquals(self::VALID_RESTART_PERIOD_2, $new->getRestartPeriod());
125 }
126
127 public function testFailWithRestartPeriod(): void
128 {
130 self::VALID_QUALIFICATION_PERIOD_1,
131 new DateTimeImmutable(self::VALID_QUALIFICATION_DATE),
132 self::VALID_RESTART_PERIOD_1,
133 true
134 );
135
136 try {
137 $obj->withRestartPeriod(self::INVALID_RESTART_PERIOD);
138 $this->fail();
139 } catch (InvalidArgumentException $e) {
140 $this->assertTrue(true);
141 }
142 }
143
144 public function testToFormInput(): void
145 {
146 $lng = $this->createMock(ilLanguage::class);
147 $df = new ILIAS\Data\Factory();
149
151 $this->createMock(\ILIAS\UI\Implementation\Component\Input\UploadLimitResolver::class),
152 new ILIAS\UI\Implementation\Component\SignalGenerator(),
153 $df,
154 $refinery,
155 $lng
156 );
157
159 self::VALID_QUALIFICATION_PERIOD_1,
160 new DateTimeImmutable(self::VALID_QUALIFICATION_DATE),
161 self::VALID_RESTART_PERIOD_1,
162 true
163 );
164
165 $lng->expects($this->atLeastOnce())
166 ->method('txt')
167 ->withConsecutive(
168 ['prg_no_validity_qualification'],
169 ['vq_period_label'],
170 ['validity_qualification_period_desc'],
171 ['validity_qualification_period'],
172 ['vq_date_label'],
173 ['validity_qualification_date_desc'],
174 ['validity_qualification_date'],
175 ['prg_no_restart'],
176 ['restart_period_label'],
177 ['restart_period_desc'],
178 ['restart_period'],
179 ['optgrp_label_validity'],
180 ['optgrp_label_restart'],
181 ['prg_validity_of_qualification']
182 )
183 ->will($this->onConsecutiveCalls(
184 'prg_no_validity_qualification',
185 'vq_period_label',
186 'validity_qualification_period_desc',
187 'validity_qualification_period',
188 'vq_date_label',
189 'validity_qualification_date_desc',
190 'validity_qualification_date',
191 'prg_no_restart',
192 'restart_period_label',
193 'restart_period_desc',
194 'restart_period',
195 'optgrp_label_validity',
196 'optgrp_label_restart',
197 'prg_validity_of_qualification'
198 ))
199 ;
200
201 $field = $obj->toFormInput(
202 $f,
203 $lng,
204 $refinery,
205 $df
206 );
207
208 $date_value = $field->getInputs()['validity_qualification']->getValue()[1]['vq_date'];
209 $date = (new DateTimeImmutable($date_value))->format('Y-m-d');
210
211 $this->assertEquals(self::VALID_QUALIFICATION_DATE, $date);
212
213 $restart_field = $field->getInputs()['restart']->getValue()[1]['vq_restart_period'];
214
215 $this->assertEquals(self::VALID_RESTART_PERIOD_1, $restart_field);
216 }
217
218 public function testWithRestartRecheck(): void
219 {
221 self::VALID_QUALIFICATION_PERIOD_1,
222 new DateTimeImmutable(self::VALID_QUALIFICATION_DATE),
223 self::VALID_RESTART_PERIOD_1,
224 true
225 );
226
227 $this->assertTrue($obj->getRestartRecheck());
228 $this->assertFalse($obj->withRestartRecheck(false)->getRestartRecheck());
229 }
230}
Factory for Date Formats.
Definition: Factory.php:27
Builds data types.
Definition: Factory.php:21
Refinery Factory $refinery
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ChatMainBarProvider \MainMenu\Provider.
Class Factory.
$lng