ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilStudyProgrammeValidityOfAchievedQualificationSettingsTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
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\Field\Node\Factory::class),
152 $this->createMock(\ILIAS\UI\Implementation\Component\Input\UploadLimitResolver::class),
153 new ILIAS\UI\Implementation\Component\SignalGenerator(),
154 $df,
155 $refinery,
156 $lng
157 );
158
160 self::VALID_QUALIFICATION_PERIOD_1,
161 new DateTimeImmutable(self::VALID_QUALIFICATION_DATE),
162 self::VALID_RESTART_PERIOD_1,
163 true
164 );
165
166 $lng_consecutive_calls = [];
167 $lng->expects($this->atLeastOnce())
168 ->method('txt')
169 ->willReturnCallback(
170 function ($txt) use (&$lng_consecutive_calls) {
171 $lng_consecutive_calls[] = $txt;
172 return $txt;
173 }
174 );
175
176 $expected_consecutive_calls = [
177 'prg_no_validity_qualification',
178 'vq_period_label',
179 'validity_qualification_period_desc',
180 'validity_qualification_period',
181 'vq_date_label',
182 'validity_qualification_date_desc',
183 'validity_qualification_date',
184 'prg_no_restart',
185 'restart_period_label',
186 'restart_period_desc',
187 'restart_recheck_label',
188 'restart_recheck_desc',
189 'restart_period',
190 'optgrp_label_validity',
191 'optgrp_label_restart',
192 'prg_validity_of_qualification'
193 ];
194
195 $field = $obj->toFormInput(
196 $f,
197 $lng,
198 $refinery,
199 $df
200 );
201
202 $this->assertEquals($expected_consecutive_calls, $lng_consecutive_calls);
203
204 $date_value = $field->getInputs()['validity_qualification']->getValue()[1]['vq_date'];
205 $date = (new DateTimeImmutable($date_value))->format('Y-m-d');
206
207 $this->assertEquals(self::VALID_QUALIFICATION_DATE, $date);
208
209 $restart_field = $field->getInputs()['restart']->getValue()[1]['vq_restart_period'];
210
211 $this->assertEquals(self::VALID_RESTART_PERIOD_1, $restart_field);
212 }
213
214 public function testWithRestartRecheck(): void
215 {
217 self::VALID_QUALIFICATION_PERIOD_1,
218 new DateTimeImmutable(self::VALID_QUALIFICATION_DATE),
219 self::VALID_RESTART_PERIOD_1,
220 true
221 );
222
223 $this->assertTrue($obj->getRestartRecheck());
224 $this->assertFalse($obj->withRestartRecheck(false)->getRestartRecheck());
225 }
226}
Factory for Date Formats.
Definition: Factory.php:27
Builds data types.
Definition: Factory.php:36
$txt
Definition: error.php:31
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.
global $lng
Definition: privfeed.php:31