‪TYPO3CMS  11.5
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 
22 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
23 
27 class ‪DatabaseRowDateTimeFieldsTest extends UnitTestCase
28 {
33  {
34  $input = [
35  'tableName' => 'aTable',
36  'processedTca' => [
37  'columns' => [
38  'aField' => [
39  'config' => [
40  'dbType' => 'date',
41  ],
42  ],
43  ],
44  ],
45  ];
46  $expected = $input;
47  $expected['databaseRow']['aField'] = 0;
48  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
49  }
50 
55  {
56  $input = [
57  'tableName' => 'aTable',
58  'processedTca' => [
59  'columns' => [
60  'aField' => [
61  'config' => [
62  'dbType' => 'date',
63  'eval' => 'null',
64  ],
65  ],
66  ],
67  ],
68  ];
69 
70  $expected = $input;
71  $expected['databaseRow']['aField'] = null;
72 
73  $actual = (new ‪DatabaseRowDateTimeFields())->addData($input);
74 
75  self::assertEquals($expected, $actual);
76 
77  $expected = null;
78 
79  self::assertSame($expected, $actual['databaseRow']['aField']);
80  }
81 
86  {
87  $input = [
88  'tableName' => 'aTable',
89  'processedTca' => [
90  'columns' => [
91  'aField' => [
92  'config' => [
93  'dbType' => 'datetime',
94  ],
95  ],
96  ],
97  ],
98  ];
99  $expected = $input;
100  $expected['databaseRow']['aField'] = 0;
101  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
102  }
103 
108  {
109  $input = [
110  'tableName' => 'aTable',
111  'processedTca' => [
112  'columns' => [
113  'aField' => [
114  'config' => [
115  'dbType' => 'datetime',
116  'eval' => 'null',
117  ],
118  ],
119  ],
120  ],
121  'databaseRow' => [
122  'aField' => null,
123  ],
124  ];
125  $expected = $input;
126  $expected['databaseRow']['aField'] = null;
127 
128  $actual = (new ‪DatabaseRowDateTimeFields())->addData($input);
129 
130  self::assertEquals($expected, $actual);
131 
132  $expected = null;
133 
134  self::assertSame($expected, $actual['databaseRow']['aField']);
135  }
136 
141  {
142  $input = [
143  'tableName' => 'aTable',
144  'processedTca' => [
145  'columns' => [
146  'aField' => [
147  'config' => [
148  'dbType' => 'time',
149  ],
150  ],
151  ],
152  ],
153  ];
154  $expected = $input;
155  $expected['databaseRow']['aField'] = 0;
156  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
157  }
158 
163  {
164  $input = [
165  'tableName' => 'aTable',
166  'processedTca' => [
167  'columns' => [
168  'aField' => [
169  'config' => [
170  'dbType' => 'time',
171  'eval' => 'null',
172  ],
173  ],
174  ],
175  ],
176  ];
177  $expected = $input;
178  $expected['databaseRow']['aField'] = null;
179 
180  $actual = (new ‪DatabaseRowDateTimeFields())->addData($input);
181 
182  self::assertEquals($expected, $actual);
183 
184  $expected = null;
185 
186  self::assertSame($expected, $actual['databaseRow']['aField']);
187  }
188 
193  {
194  $oldTimezone = date_default_timezone_get();
195  date_default_timezone_set('UTC');
196  $input = [
197  'tableName' => 'aTable',
198  'processedTca' => [
199  'columns' => [
200  'aField' => [
201  'config' => [
202  'dbType' => 'date',
203  ],
204  ],
205  ],
206  ],
207  'databaseRow' => [
208  'aField' => '2015-07-27',
209  ],
210  ];
211  $expected = $input;
212  $expected['databaseRow']['aField'] = '2015-07-27T00:00:00+00:00';
213  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
214  date_default_timezone_set($oldTimezone);
215  }
216 
221  {
222  $oldTimezone = date_default_timezone_get();
223  date_default_timezone_set('UTC');
224  $input = [
225  'tableName' => 'aTable',
226  'processedTca' => [
227  'columns' => [
228  'aField' => [
229  'config' => [
230  'dbType' => 'datetime',
231  ],
232  ],
233  ],
234  ],
235  'databaseRow' => [
236  'aField' => '2015-07-27 15:25:32',
237  ],
238  ];
239  $expected = $input;
240  $expected['databaseRow']['aField'] = '2015-07-27T15:25:32+00:00';
241  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
242  date_default_timezone_set($oldTimezone);
243  }
244 
249  {
250  $oldTimezone = date_default_timezone_get();
251  date_default_timezone_set('UTC');
252  $input = [
253  'tableName' => 'aTable',
254  'processedTca' => [
255  'columns' => [
256  'aField' => [
257  'config' => [
258  'dbType' => 'time',
259  ],
260  ],
261  ],
262  ],
263  'databaseRow' => [
264  'aField' => '15:25:32',
265  ],
266  ];
267  $expected = $input;
268  $expected['databaseRow']['aField'] = date('Y-m-d') . 'T15:25:32+00:00';
269  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
270  date_default_timezone_set($oldTimezone);
271  }
272 
277  {
278  $oldTimezone = date_default_timezone_get();
279  date_default_timezone_set('UTC');
280  $input = [
281  'tableName' => 'aTable',
282  'processedTca' => [
283  'columns' => [
284  'aField' => [
285  'config' => [
286  'dbType' => 'time',
287  'eval' => 'null',
288  ],
289  ],
290  ],
291  ],
292  'databaseRow' => [
293  'aField' => '00:00:00',
294  ],
295  ];
296  $expected = $input;
297  $expected['databaseRow']['aField'] = 0;
298 
299  self::assertEquals($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
300  date_default_timezone_set($oldTimezone);
301  }
302 
307  {
308  foreach (‪QueryHelper::getDateTimeTypes() as $dbType) {
309  $input = [
310  'tableName' => 'aTable',
311  'processedTca' => [
312  'columns' => [
313  'aField' => [
314  'config' => [
315  'dbType' => $dbType,
316  ],
317  ],
318  ],
319  ],
320  'databaseRow' => [
321  'aField' => ‪QueryHelper::getDateTimeFormats()[$dbType]['empty'],
322  ],
323  ];
324  $expected = $input;
325  $expected['databaseRow']['aField'] = ‪QueryHelper::getDateTimeFormats()[$dbType]['reset'];
326  self::assertSame($expected, (new ‪DatabaseRowDateTimeFields())->addData($input));
327  }
328  }
329 }
‪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:32
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataSetsTimestampZeroForDefaultTimeField
‪addDataSetsTimestampZeroForDefaultTimeField()
Definition: DatabaseRowDateTimeFieldsTest.php:140
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataConvertsMidnightTimeStringOfNullableFieldToTimestamp
‪addDataConvertsMidnightTimeStringOfNullableFieldToTimestamp()
Definition: DatabaseRowDateTimeFieldsTest.php:276
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataConvertsTimeStringToTimestamp
‪addDataConvertsTimeStringToTimestamp()
Definition: DatabaseRowDateTimeFieldsTest.php:248
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataSetsTimestampNullForDefaultDateTimeField
‪addDataSetsTimestampNullForDefaultDateTimeField()
Definition: DatabaseRowDateTimeFieldsTest.php:107
‪TYPO3\CMS\Core\Database\Query\QueryHelper
Definition: QueryHelper.php:32
‪TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDateTimeFields
Definition: DatabaseRowDateTimeFields.php:26
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataSetsTimestampNullForDefaultTimeField
‪addDataSetsTimestampNullForDefaultTimeField()
Definition: DatabaseRowDateTimeFieldsTest.php:162
‪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:54
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataAppliesResetValueForEmptyValue
‪addDataAppliesResetValueForEmptyValue()
Definition: DatabaseRowDateTimeFieldsTest.php:306
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataSetsTimestampZeroForDefaultDateTimeField
‪addDataSetsTimestampZeroForDefaultDateTimeField()
Definition: DatabaseRowDateTimeFieldsTest.php:85
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest
Definition: DatabaseRowDateTimeFieldsTest.php:28
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataConvertsDateTimeStringToTimestamp
‪addDataConvertsDateTimeStringToTimestamp()
Definition: DatabaseRowDateTimeFieldsTest.php:220
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseRowDateTimeFieldsTest\addDataConvertsDateStringToTimestamp
‪addDataConvertsDateStringToTimestamp()
Definition: DatabaseRowDateTimeFieldsTest.php:192
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider
Definition: DatabaseDefaultLanguagePageRowTest.php:18