‪TYPO3CMS  ‪main
DatabaseRowDateTimeFieldsTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\Test;
23 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
24 
25 final class ‪DatabaseRowDateTimeFieldsTest extends UnitTestCase
26 {
27  #[Test]
29  {
30  $input = [
31  'tableName' => 'aTable',
32  'processedTca' => [
33  'columns' => [
34  'aField' => [
35  'config' => [
36  'type' => 'datetime',
37  'dbType' => 'date',
38  ],
39  ],
40  ],
41  ],
42  ];
43  $expected = $input;
44  $expected['databaseRow']['aField'] = 0;
45  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
46  }
47 
48  #[Test]
50  {
51  $input = [
52  'tableName' => 'aTable',
53  'processedTca' => [
54  'columns' => [
55  'aField' => [
56  'config' => [
57  'type' => 'datetime',
58  'dbType' => 'date',
59  'nullable' => true,
60  ],
61  ],
62  ],
63  ],
64  ];
65 
66  $expected = $input;
67  $expected['databaseRow']['aField'] = null;
68 
69  $actual = (new ‪DatabaseRowDateTimeFields())->addData($input);
70 
71  self::assertEquals($expected, $actual);
72 
73  $expected = null;
74 
75  self::assertSame($expected, $actual['databaseRow']['aField']);
76  }
77 
78  #[Test]
80  {
81  $input = [
82  'tableName' => 'aTable',
83  'processedTca' => [
84  'columns' => [
85  'aField' => [
86  'config' => [
87  'type' => 'datetime',
88  'dbType' => 'datetime',
89  ],
90  ],
91  ],
92  ],
93  ];
94  $expected = $input;
95  $expected['databaseRow']['aField'] = 0;
96  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
97  }
98 
99  #[Test]
101  {
102  $input = [
103  'tableName' => 'aTable',
104  'processedTca' => [
105  'columns' => [
106  'aField' => [
107  'config' => [
108  'type' => 'datetime',
109  'dbType' => 'datetime',
110  'nullable' => true,
111  ],
112  ],
113  ],
114  ],
115  'databaseRow' => [
116  'aField' => null,
117  ],
118  ];
119  $expected = $input;
120  $expected['databaseRow']['aField'] = null;
121 
122  $actual = (new ‪DatabaseRowDateTimeFields())->addData($input);
123 
124  self::assertEquals($expected, $actual);
125 
126  $expected = null;
127 
128  self::assertSame($expected, $actual['databaseRow']['aField']);
129  }
130 
131  #[Test]
133  {
134  $input = [
135  'tableName' => 'aTable',
136  'processedTca' => [
137  'columns' => [
138  'aField' => [
139  'config' => [
140  'type' => 'datetime',
141  'dbType' => 'time',
142  ],
143  ],
144  ],
145  ],
146  ];
147  $expected = $input;
148  $expected['databaseRow']['aField'] = '00:00:00';
149  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
150  }
151 
152  #[Test]
154  {
155  $input = [
156  'tableName' => 'aTable',
157  'processedTca' => [
158  'columns' => [
159  'aField' => [
160  'config' => [
161  'type' => 'datetime',
162  'dbType' => 'time',
163  'nullable' => true,
164  ],
165  ],
166  ],
167  ],
168  ];
169  $expected = $input;
170  $expected['databaseRow']['aField'] = null;
171 
172  $actual = (new ‪DatabaseRowDateTimeFields())->addData($input);
173 
174  self::assertEquals($expected, $actual);
175 
176  $expected = null;
177 
178  self::assertSame($expected, $actual['databaseRow']['aField']);
179  }
180 
181  #[Test]
183  {
184  $oldTimezone = date_default_timezone_get();
185  date_default_timezone_set('UTC');
186  $input = [
187  'tableName' => 'aTable',
188  'processedTca' => [
189  'columns' => [
190  'aField' => [
191  'config' => [
192  'type' => 'datetime',
193  'dbType' => 'date',
194  ],
195  ],
196  ],
197  ],
198  'databaseRow' => [
199  'aField' => '2015-07-27',
200  ],
201  ];
202  $expected = $input;
203  $expected['databaseRow']['aField'] = '2015-07-27T00:00:00+00:00';
204  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
205  date_default_timezone_set($oldTimezone);
206  }
207 
208  #[Test]
210  {
211  $oldTimezone = date_default_timezone_get();
212  date_default_timezone_set('UTC');
213  $input = [
214  'tableName' => 'aTable',
215  'processedTca' => [
216  'columns' => [
217  'aField' => [
218  'config' => [
219  'type' => 'datetime',
220  'dbType' => 'datetime',
221  ],
222  ],
223  ],
224  ],
225  'databaseRow' => [
226  'aField' => '2015-07-27 15:25:32',
227  ],
228  ];
229  $expected = $input;
230  $expected['databaseRow']['aField'] = '2015-07-27T15:25:32+00:00';
231  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
232  date_default_timezone_set($oldTimezone);
233  }
234 
235  #[Test]
237  {
238  $oldTimezone = date_default_timezone_get();
239  date_default_timezone_set('UTC');
240  $input = [
241  'tableName' => 'aTable',
242  'processedTca' => [
243  'columns' => [
244  'aField' => [
245  'config' => [
246  'type' => 'datetime',
247  'dbType' => 'time',
248  ],
249  ],
250  ],
251  ],
252  'databaseRow' => [
253  'aField' => '15:25:32',
254  ],
255  ];
256  $expected = $input;
257  $expected['databaseRow']['aField'] = date('Y-m-d') . 'T15:25:32+00:00';
258  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
259  date_default_timezone_set($oldTimezone);
260  }
261 
262  #[Test]
264  {
265  $oldTimezone = date_default_timezone_get();
266  date_default_timezone_set('UTC');
267  $input = [
268  'tableName' => 'aTable',
269  'processedTca' => [
270  'columns' => [
271  'aField' => [
272  'config' => [
273  'type' => 'datetime',
274  'dbType' => 'time',
275  'nullable' => true,
276  ],
277  ],
278  ],
279  ],
280  'databaseRow' => [
281  'aField' => '00:00:00',
282  ],
283  ];
284  $expected = $input;
285  $expected['databaseRow']['aField'] = '00:00:00';
286 
287  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
288  date_default_timezone_set($oldTimezone);
289  }
290 
291  #[Test]
293  {
294  $oldTimezone = date_default_timezone_get();
295  date_default_timezone_set('UTC');
296  $input = [
297  'tableName' => 'aTable',
298  'processedTca' => [
299  'columns' => [
300  'aField' => [
301  'config' => [
302  'type' => 'datetime',
303  'dbType' => 'time',
304  'nullable' => true,
305  ],
306  ],
307  ],
308  ],
309  'databaseRow' => [
310  'aField' => null,
311  ],
312  ];
313  $expected = $input;
314  $expected['databaseRow']['aField'] = null;
315 
316  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
317  date_default_timezone_set($oldTimezone);
318  }
319 
320  #[Test]
322  {
323  foreach (‪QueryHelper::getDateTimeTypes() as $dbType) {
324  $input = [
325  'tableName' => 'aTable',
326  'processedTca' => [
327  'columns' => [
328  'aField' => [
329  'config' => [
330  'type' => 'datetime',
331  'dbType' => $dbType,
332  ],
333  ],
334  ],
335  ],
336  'databaseRow' => [
337  'aField' => ‪QueryHelper::getDateTimeFormats()[$dbType]['empty'],
338  ],
339  ];
340  $expected = $input;
341  $expected['databaseRow']['aField'] = ‪QueryHelper::getDateTimeFormats()[$dbType]['reset'];
342  self::assertSame($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
343  }
344  }
345 }
‪TYPO3\CMS\Core\Database\Query\QueryHelper\getDateTimeFormats
‪static array getDateTimeFormats()
Definition: QueryHelper.php:183
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataSetsTimestampZeroForDefaultDateField
‪addDataSetsTimestampZeroForDefaultDateField()
Definition: DatabaseRowDateTimeFieldsTest.php:28
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataSetsTimestampZeroForDefaultTimeField
‪addDataSetsTimestampZeroForDefaultTimeField()
Definition: DatabaseRowDateTimeFieldsTest.php:132
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataConvertsMidnightTimeStringOfNullableFieldToNull
‪addDataConvertsMidnightTimeStringOfNullableFieldToNull()
Definition: DatabaseRowDateTimeFieldsTest.php:292
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataConvertsTimeStringToTimestamp
‪addDataConvertsTimeStringToTimestamp()
Definition: DatabaseRowDateTimeFieldsTest.php:236
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataConvertsMidnightTimeStringOfNullableFieldToDefaultValue
‪addDataConvertsMidnightTimeStringOfNullableFieldToDefaultValue()
Definition: DatabaseRowDateTimeFieldsTest.php:263
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataSetsTimestampNullForDefaultDateTimeField
‪addDataSetsTimestampNullForDefaultDateTimeField()
Definition: DatabaseRowDateTimeFieldsTest.php:100
‪TYPO3\CMS\Core\Database\Query\QueryHelper
Definition: QueryHelper.php:32
‪TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDateTimeFields
Definition: DatabaseRowDateTimeFields.php:25
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataSetsTimestampNullForDefaultTimeField
‪addDataSetsTimestampNullForDefaultTimeField()
Definition: DatabaseRowDateTimeFieldsTest.php:153
‪TYPO3\CMS\Core\Database\Query\QueryHelper\getDateTimeTypes
‪static array getDateTimeTypes()
Definition: QueryHelper.php:211
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataSetsTimestampNullForDefaultDateField
‪addDataSetsTimestampNullForDefaultDateField()
Definition: DatabaseRowDateTimeFieldsTest.php:49
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataAppliesResetValueForEmptyValue
‪addDataAppliesResetValueForEmptyValue()
Definition: DatabaseRowDateTimeFieldsTest.php:321
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataSetsTimestampZeroForDefaultDateTimeField
‪addDataSetsTimestampZeroForDefaultDateTimeField()
Definition: DatabaseRowDateTimeFieldsTest.php:79
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest
Definition: DatabaseRowDateTimeFieldsTest.php:26
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataConvertsDateTimeStringToTimestamp
‪addDataConvertsDateTimeStringToTimestamp()
Definition: DatabaseRowDateTimeFieldsTest.php:209
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataConvertsDateStringToTimestamp
‪addDataConvertsDateStringToTimestamp()
Definition: DatabaseRowDateTimeFieldsTest.php:182
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider
Definition: DatabaseDefaultLanguagePageRowTest.php:18