ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
DataHelperTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
23use PHPUnit\Framework\TestCase;
24use ILIAS\MetaData\DataHelper\NullDataHelper as NullInternalDataHelper;
26use ILIAS\MetaData\Elements\Data\DataInterface as ElementsDataInterface;
27use ILIAS\MetaData\Elements\Data\NullData as NullElementsData;
28
29class DataHelperTest extends TestCase
30{
31 protected function getData(string $value): ElementsDataInterface
32 {
33 return new class ($value) extends NullElementsData {
34 public function __construct(protected string $value)
35 {
36 }
37
38 public function value(): string
39 {
40 return $this->value;
41 }
42 };
43 }
44
45 protected function getDataHelper(): DataHelper
46 {
47 $internal_helper = new class () extends NullInternalDataHelper {
48 public function durationToIterator(string $duration): \Generator
49 {
50 foreach (explode(':', $duration) as $v) {
51 yield $v === '' ? null : $v;
52 }
53 }
54
55 public function durationToSeconds(string $duration): int
56 {
57 $r = 0;
58 foreach ($this->durationToIterator($duration) as $v) {
59 $r += $v;
60 }
61 return $r;
62 }
63
64 public function datetimeToObject(string $datetime): \DateTimeImmutable
65 {
66 return new \DateTimeImmutable($datetime);
67 }
68
69 public function durationFromIntegers(
70 ?int $years,
71 ?int $months,
72 ?int $days,
73 ?int $hours,
74 ?int $minutes,
75 ?int $seconds
76 ): string {
77 $array = [$years, $months, $days, $hours, $minutes, $seconds];
78 return implode(':', $array);
79 }
80
81 public function datetimeFromObject(\DateTimeImmutable $object): string
82 {
83 return $object->format('Y-m-d');
84 }
85
86 public function getAllLanguages(): \Generator
87 {
88 yield from ['lang1', 'lang2', 'lang3'];
89 }
90 };
91
92 $data_presentation = new class () extends NullData {
93 public function dataValue(ElementsDataInterface $data): string
94 {
95 return 'presentable ' . $data->value();
96 }
97
98 public function language(string $language): string
99 {
100 return 'translated_' . $language;
101 }
102 };
103
105 }
106
107 public function testMakePresentable(): void
108 {
109 $helper = $this->getDataHelper();
110
111 $this->assertSame(
112 'presentable value',
113 $helper->makePresentable($this->getData('value'))
114 );
115 }
116
117 public function testMakePresentableAsList(): void
118 {
119 $helper = $this->getDataHelper();
120
121 $this->assertSame(
122 'presentable value1,? ,.presentable value2,? ,.presentable value3',
123 $helper->makePresentableAsList(
124 ',? ,.',
125 $this->getData('value1'),
126 $this->getData('value2'),
127 $this->getData('value3')
128 )
129 );
130 }
131
132 public function testDurationToArray(): void
133 {
134 $helper = $this->getDataHelper();
135
136 $this->assertSame(
137 [89, 0, null, null, null, 1],
138 $helper->durationToArray('89:0::::1')
139 );
140 }
141
142 public function testDurationToSeconds(): void
143 {
144 $helper = $this->getDataHelper();
145
146 $this->assertSame(
147 89 + 5 + 1,
148 $helper->durationToSeconds('89:5::::1')
149 );
150 }
151
152 public function testDatetimeToObject(): void
153 {
154 $helper = $this->getDataHelper();
155
156 $this->assertSame(
157 '2013-01-20',
158 $helper->datetimeToObject('2013-01-20')->format('Y-m-d')
159 );
160 }
161
162 public function testDurationFromIntegers(): void
163 {
164 $helper = $this->getDataHelper();
165
166 $this->assertSame(
167 '89:0::::1',
168 $helper->durationFromIntegers(89, 0, null, null, null, 1)
169 );
170 }
171
172 public function testDatetimeFromObject(): void
173 {
174 $helper = $this->getDataHelper();
175
176 $this->assertSame(
177 '2013-01-20',
178 $helper->datetimeFromObject(new \DateTimeImmutable('2013-01-20'))
179 );
180 }
181
182 public function testGetAllLanguages(): void
183 {
184 $helper = $this->getDataHelper();
185
186 $languages = $helper->getAllLanguages();
187
188 $this->assertCount(3, $languages);
189 $this->assertSame('lang1', $languages[0]->value());
190 $this->assertSame('translated_lang1', $languages[0]->presentableLabel());
191 $this->assertSame('lang2', $languages[1]->value());
192 $this->assertSame('translated_lang2', $languages[1]->presentableLabel());
193 $this->assertSame('lang3', $languages[2]->value());
194 $this->assertSame('translated_lang3', $languages[2]->presentableLabel());
195 }
196}
$datetime
$duration
__construct(InternalDataHelper $internal_helper, DataPresentation $data_presentation)
Definition: DataHelper.php:32
datetimeToObject(string $datetime)
Translates strings in the LOM-internal datetime format to datetime objects.
Definition: DataHelper.php:71
durationFromIntegers(?int $years, ?int $months, ?int $days, ?int $hours, ?int $minutes, ?int $seconds)
Get a string in the LOM-internal duration format as specified by the provided integers.
Definition: DataHelper.php:76
datetimeFromObject(\DateTimeImmutable $object)
Translates datetime objects to strings in the LOM-internal datetime format.
Definition: DataHelper.php:94
durationToSeconds(string $duration)
Translates strings in the LOM-internal duration format to seconds.
Definition: DataHelper.php:66