public function FieldDateTest::testFieldDate in Drupal 9
Same name and namespace in other branches
- 8 core/modules/views/tests/src/Kernel/Handler/FieldDateTest.php \Drupal\Tests\views\Kernel\Handler\FieldDateTest::testFieldDate()
Sets up functional test of the views date field.
File
- core/
modules/ views/ tests/ src/ Kernel/ Handler/ FieldDateTest.php, line 68
Class
- FieldDateTest
- Tests the core Drupal\views\Plugin\views\field\Date handler.
Namespace
Drupal\Tests\views\Kernel\HandlerCode
public function testFieldDate() {
$view = Views::getView('test_view');
$view
->setDisplay();
$view->displayHandlers
->get('default')
->overrideOption('fields', [
'created' => [
'id' => 'created',
'table' => 'views_test_data',
'field' => 'created',
'relationship' => 'none',
// ISO 8601 format, see https://www.php.net/manual/datetime.format.php
'custom_date_format' => 'c',
],
'destroyed' => [
'id' => 'destroyed',
'table' => 'views_test_data',
'field' => 'destroyed',
'relationship' => 'none',
'custom_date_format' => 'c',
],
]);
$time = gmmktime(0, 0, 0, 1, 1, 2000);
$this
->executeView($view);
$timezones = [
NULL,
'UTC',
'America/New_York',
];
/** @var \Drupal\Core\Datetime\DateFormatterInterface $date_formatter */
$date_formatter = $this->container
->get('date.formatter');
// Check each date/time in various timezones.
foreach ($timezones as $timezone) {
$dates = [
'short' => $date_formatter
->format($time, 'short', '', $timezone),
'medium' => $date_formatter
->format($time, 'medium', '', $timezone),
'long' => $date_formatter
->format($time, 'long', '', $timezone),
'custom' => $date_formatter
->format($time, 'custom', 'c', $timezone),
'fallback' => $date_formatter
->format($time, 'fallback', '', $timezone),
'html_date' => $date_formatter
->format($time, 'html_date', '', $timezone),
'html_datetime' => $date_formatter
->format($time, 'html_datetime', '', $timezone),
'html_month' => $date_formatter
->format($time, 'html_month', '', $timezone),
'html_time' => $date_formatter
->format($time, 'html_time', '', $timezone),
'html_week' => $date_formatter
->format($time, 'html_week', '', $timezone),
'html_year' => $date_formatter
->format($time, 'html_year', '', $timezone),
'html_yearless_date' => $date_formatter
->format($time, 'html_yearless_date', '', $timezone),
];
$this
->assertRenderedDatesEqual($view, $dates, $timezone);
}
// Check times in the past.
$time_since = $date_formatter
->formatTimeDiffSince($time);
$intervals = [
'raw time ago' => $time_since,
'time ago' => t('%time ago', [
'%time' => $time_since,
]),
'raw time span' => $time_since,
'inverse time span' => "-{$time_since}",
'time span' => t('%time ago', [
'%time' => $time_since,
]),
];
$this
->assertRenderedDatesEqual($view, $intervals);
// Check times in the future.
$time = gmmktime(0, 0, 0, 1, 1, 2050);
$formatted = $date_formatter
->formatTimeDiffUntil($time);
$intervals = [
'raw time span' => "-{$formatted}",
'time span' => t('%time hence', [
'%time' => $formatted,
]),
];
$this
->assertRenderedFutureDatesEqual($view, $intervals);
}