function ArgumentDefaultTest::testArgumentDefaultDate

Tests current date default argument.

See also

\Drupal\views\Plugin\views\argument_default\Date

File

core/modules/views/tests/src/Functional/Plugin/ArgumentDefaultTest.php, line 146

Class

ArgumentDefaultTest
Tests pluggable argument_default for views.

Namespace

Drupal\Tests\views\Functional\Plugin

Code

public function testArgumentDefaultDate() : void {
  /** @var \Drupal\Core\Datetime\DateFormatterInterface $date_formatter */
  $date_formatter = \Drupal::service('date.formatter');
  $request_time = \Drupal::requestStack()->getCurrentRequest()->server
    ->get('REQUEST_TIME');
  $view = Views::getView('test_argument_default_date');
  $view->setDisplay();
  $view->initHandlers();
  $expected = $date_formatter->format($request_time, 'custom', 'Y-m-d');
  $this->assertEquals($expected, $view->argument['null']
    ->getDefaultArgument(), 'Current date argument should be used by default.');
  // Update the View to use the Ym format argument.
  $view = Views::getView('test_argument_default_date');
  $view->setDisplay();
  $view->displayHandlers
    ->get('default')
    ->overrideOption('arguments', [
    'null' => [
      'id' => 'year_month',
      'table' => 'node_field_data',
      'field' => 'created_year_month',
      'plugin_id' => 'date_year_month',
      'default_argument_type' => 'date',
    ],
  ]);
  $view->initHandlers();
  $expected = $date_formatter->format($request_time, 'custom', 'Ym');
  $this->assertEquals($expected, $view->argument['null']
    ->getDefaultArgument(), 'Current date argument should be used by default.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.