‪TYPO3CMS  11.5
DateViewHelperTest.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 
21 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
22 use TYPO3Fluid\Fluid\Core\ViewHelper\Exception;
23 
24 class ‪DateViewHelperTest extends FunctionalTestCase
25 {
29  protected ‪$initializeDatabase = false;
30 
34  protected ‪$timezone;
35 
36  protected function ‪setUp(): void
37  {
38  parent::setUp();
39  $this->timezone = @date_default_timezone_get();
40  ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'] = 'Y-m-d';
41  }
42 
43  protected function ‪tearDown(): void
44  {
45  date_default_timezone_set($this->timezone);
46  parent::tearDown();
47  }
48 
52  public function ‪viewHelperFormatsDateCorrectly(): void
53  {
54  $view = new ‪StandaloneView();
55  $view->setTemplateSource('<f:format.date date="1980-12-13"></f:format.date>');
56  self::assertSame('1980-12-13', $view->render());
57  }
58 
62  public function ‪viewHelperRespectsCustomFormat(): void
63  {
64  $view = new ‪StandaloneView();
65  $view->setTemplateSource('<f:format.date format="d.m.Y">1980-02-01</f:format.date>');
66  self::assertSame('01.02.1980', $view->render());
67  }
68 
73  {
74  $view = new StandaloneView();
75  $view->setTemplateSource('<f:format.date></f:format.date>');
76  self::assertSame('', $view->render());
77  }
78 
83  {
84  $view = new StandaloneView();
85  $view->setTemplateSource('<f:format.date date=""></f:format.date>');
86  self::assertSame(date('Y-m-d', ‪$GLOBALS['EXEC_TIME']), $view->render());
87  }
88 
93  {
94  ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'] = '';
95  $view = new StandaloneView();
96  $view->setTemplateSource('<f:format.date>@1391876733</f:format.date>');
97  self::assertSame('2014-02-08', $view->render());
98  }
99 
103  public function ‪viewHelperUsesSystemFormat(): void
104  {
105  ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'] = 'l, j. M y';
106  $view = new StandaloneView();
107  $view->setTemplateSource('<f:format.date>@1391876733</f:format.date>');
108  self::assertSame('Saturday, 8. Feb 14', $view->render());
109  }
110 
116  {
117  ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'] = 'l, j. M y';
118  $view = new StandaloneView();
119  $view->setTemplateSource('{f:format.date(date: "@1645115363", format:"{undefinedVariable}")}');
120  self::assertSame('Thursday, 17. Feb 22', ($view->render()));
121  }
122 
127  {
128  $this->expectException(Exception::class);
129  $this->expectExceptionCode(1241722579);
130  $view = new StandaloneView();
131  $view->setTemplateSource('<f:format.date>foo</f:format.date>');
132  $view->render();
133  }
134 
138  public function ‪viewHelperUsesChildNodesWithTimestamp(): void
139  {
140  $view = new StandaloneView();
141  $view->setTemplateSource('<f:format.date>1359891658</f:format.date>');
142  self::assertEquals('2013-02-03', $view->render());
143  }
144 
148  public function ‪dateArgumentHasPriorityOverChildNodes(): void
149  {
150  $view = new StandaloneView();
151  $view->setTemplateSource('<f:format.date date="1980-12-12">1359891658</f:format.date>');
152  self::assertEquals('1980-12-12', $view->render());
153  }
154 
158  public function ‪relativeDateCalculationWorksWithoutBase(): void
159  {
160  $view = new StandaloneView();
161  $view->setTemplateSource('<f:format.date date="now" format="Y"/>');
162  self::assertEquals(date('Y'), $view->render());
163  }
164 
168  public function ‪baseArgumentIsConsideredForRelativeDate(): void
169  {
170  $view = new StandaloneView();
171  $view->setTemplateSource('<f:format.date date="-1 year" base="2017-01-01" format="Y"/>');
172  self::assertEquals('2016', $view->render());
173  }
174 
178  public function ‪baseArgumentDoesNotAffectAbsoluteTime(): void
179  {
180  $view = new StandaloneView();
181  $view->setTemplateSource('<f:format.date date="@1435784732" base="1485907200" format="Y"/>');
182  self::assertEquals('2015', $view->render());
183  }
184 
186  {
187  return [
188  'Europe/Berlin' => [
189  'Europe/Berlin',
190  '2013-02-03 12:40',
191  ],
192  'Asia/Riyadh' => [
193  'Asia/Riyadh',
194  '2013-02-03 14:40',
195  ],
196  ];
197  }
198 
203  public function ‪viewHelperRespectsDefaultTimezoneForIntegerTimestamp(string ‪$timezone, string $expected): void
204  {
205  date_default_timezone_set(‪$timezone);
206  $view = new ‪StandaloneView();
207  $date = 1359891658; // 2013-02-03 11:40 UTC
208  $view->setTemplateSource('<f:format.date date="' . $date . '" format="Y-m-d H:i"/>');
209  self::assertEquals($expected, $view->render());
210  }
211 
213  {
214  return [
215  'Europe/Berlin UTC' => [
216  'Europe/Berlin',
217  '@1359891658',
218  '2013-02-03 12:40',
219  ],
220  'Europe/Berlin Moscow' => [
221  'Europe/Berlin',
222  '03/Oct/2000:14:55:36 +0400',
223  '2000-10-03 12:55',
224  ],
225  'Asia/Riyadh UTC' => [
226  'Asia/Riyadh',
227  '@1359891658',
228  '2013-02-03 14:40',
229  ],
230  'Asia/Riyadh Moscow' => [
231  'Asia/Riyadh',
232  '03/Oct/2000:14:55:36 +0400',
233  '2000-10-03 13:55',
234  ],
235  ];
236  }
237 
242  public function ‪viewHelperRespectsDefaultTimezoneForStringTimestamp(string $timeZone, string $date, string $expected): void
243  {
244  date_default_timezone_set($timeZone);
245  $view = new ‪StandaloneView();
246  $view->setTemplateSource('<f:format.date date="' . $date . '" format="Y-m-d H:i"/>');
247  self::assertEquals($expected, $view->render());
248  }
249 }
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\viewHelperThrowsExceptionWithOriginalMessageIfDateStringCantBeParsed
‪viewHelperThrowsExceptionWithOriginalMessageIfDateStringCantBeParsed()
Definition: DateViewHelperTest.php:124
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\viewHelperUsesChildNodesWithTimestamp
‪viewHelperUsesChildNodesWithTimestamp()
Definition: DateViewHelperTest.php:136
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\viewHelperRespectsDefaultTimezoneForStringTimestampDataProvider
‪viewHelperRespectsDefaultTimezoneForStringTimestampDataProvider()
Definition: DateViewHelperTest.php:210
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\viewHelperRespectsDefaultTimezoneForStringTimestamp
‪viewHelperRespectsDefaultTimezoneForStringTimestamp(string $timeZone, string $date, string $expected)
Definition: DateViewHelperTest.php:240
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\baseArgumentDoesNotAffectAbsoluteTime
‪baseArgumentDoesNotAffectAbsoluteTime()
Definition: DateViewHelperTest.php:176
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\viewHelperRespectsDefaultTimezoneForIntegerTimestamp
‪viewHelperRespectsDefaultTimezoneForIntegerTimestamp(string $timezone, string $expected)
Definition: DateViewHelperTest.php:201
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\viewHelperRespectsDefaultTimezoneForIntegerTimestampDataProvider
‪viewHelperRespectsDefaultTimezoneForIntegerTimestampDataProvider()
Definition: DateViewHelperTest.php:183
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\viewHelperFormatsDateCorrectly
‪viewHelperFormatsDateCorrectly()
Definition: DateViewHelperTest.php:50
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\setUp
‪setUp()
Definition: DateViewHelperTest.php:34
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\relativeDateCalculationWorksWithoutBase
‪relativeDateCalculationWorksWithoutBase()
Definition: DateViewHelperTest.php:156
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format
Definition: BytesViewHelperTest.php:18
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\$initializeDatabase
‪bool $initializeDatabase
Definition: DateViewHelperTest.php:28
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\viewHelperUsesDefaultIfNoSystemFormatIsAvailable
‪viewHelperUsesDefaultIfNoSystemFormatIsAvailable()
Definition: DateViewHelperTest.php:90
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\tearDown
‪tearDown()
Definition: DateViewHelperTest.php:41
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\viewHelperReturnsEmptyStringIfChildrenIsEmpty
‪viewHelperReturnsEmptyStringIfChildrenIsEmpty()
Definition: DateViewHelperTest.php:70
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\$timezone
‪string $timezone
Definition: DateViewHelperTest.php:32
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\dateArgumentHasPriorityOverChildNodes
‪dateArgumentHasPriorityOverChildNodes()
Definition: DateViewHelperTest.php:146
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\viewHelperUsesSystemFormatWhenFormatWithNullValueIsGiven
‪viewHelperUsesSystemFormatWhenFormatWithNullValueIsGiven()
Definition: DateViewHelperTest.php:113
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\viewHelperRespectsCustomFormat
‪viewHelperRespectsCustomFormat()
Definition: DateViewHelperTest.php:60
‪TYPO3\CMS\Fluid\View\StandaloneView
Definition: StandaloneView.php:31
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\viewHelperReturnsCurrentDateIfEmptyStringIsGiven
‪viewHelperReturnsCurrentDateIfEmptyStringIsGiven()
Definition: DateViewHelperTest.php:80
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\baseArgumentIsConsideredForRelativeDate
‪baseArgumentIsConsideredForRelativeDate()
Definition: DateViewHelperTest.php:166
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest\viewHelperUsesSystemFormat
‪viewHelperUsesSystemFormat()
Definition: DateViewHelperTest.php:101
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\DateViewHelperTest
Definition: DateViewHelperTest.php:25