You are here

protected function FilterDateTest::setUp in Drupal 9

Same name in this branch
  1. 9 core/modules/views/tests/src/Functional/Handler/FilterDateTest.php \Drupal\Tests\views\Functional\Handler\FilterDateTest::setUp()
  2. 9 core/modules/datetime_range/tests/src/Kernel/Views/FilterDateTest.php \Drupal\Tests\datetime_range\Kernel\Views\FilterDateTest::setUp()
  3. 9 core/modules/datetime/tests/src/Functional/Views/FilterDateTest.php \Drupal\Tests\datetime\Functional\Views\FilterDateTest::setUp()
  4. 9 core/modules/datetime/tests/src/Kernel/Views/FilterDateTest.php \Drupal\Tests\datetime\Kernel\Views\FilterDateTest::setUp()
Same name and namespace in other branches
  1. 8 core/modules/datetime_range/tests/src/Kernel/Views/FilterDateTest.php \Drupal\Tests\datetime_range\Kernel\Views\FilterDateTest::setUp()
  2. 10 core/modules/datetime_range/tests/src/Kernel/Views/FilterDateTest.php \Drupal\Tests\datetime_range\Kernel\Views\FilterDateTest::setUp()

Create nodes with relative date range of: yesterday - today, today - today, and today - tomorrow.

Overrides DateTimeHandlerTestBase::setUp

File

core/modules/datetime_range/tests/src/Kernel/Views/FilterDateTest.php, line 53

Class

FilterDateTest
Tests date-only fields.

Namespace

Drupal\Tests\datetime_range\Kernel\Views

Code

protected function setUp($import_test_views = TRUE) : void {
  parent::setUp($import_test_views);

  // Set to 'today'.
  static::$date = $this
    ->getUTCEquivalentOfUserNowAsTimestamp();

  // Change field storage to date-only.
  $storage = FieldStorageConfig::load('node.' . static::$field_name);
  $storage
    ->setSetting('datetime_type', DateRangeItem::DATETIME_TYPE_DATE);
  $storage
    ->save();

  // Retrieve tomorrow, today and yesterday dates.
  $dates = $this
    ->getRelativeDateValuesFromTimestamp(static::$date);

  // Node 0: Yesterday - Today.
  $node = Node::create([
    'title' => $this
      ->randomMachineName(8),
    'type' => 'page',
    'field_date' => [
      'value' => $dates[2],
      'end_value' => $dates[1],
    ],
  ]);
  $node
    ->save();
  $this->nodes[] = $node;

  // Node 1: Today - Today.
  $node = Node::create([
    'title' => $this
      ->randomMachineName(8),
    'type' => 'page',
    'field_date' => [
      'value' => $dates[1],
      'end_value' => $dates[1],
    ],
  ]);
  $node
    ->save();
  $this->nodes[] = $node;

  // Node 2: Today - Tomorrow.
  $node = Node::create([
    'title' => $this
      ->randomMachineName(8),
    'type' => 'page',
    'field_date' => [
      'value' => $dates[1],
      'end_value' => $dates[0],
    ],
  ]);
  $node
    ->save();
  $this->nodes[] = $node;

  // Add end date filter to the test_filter_datetime view.

  /** @var \Drupal\views\Entity\View $view */
  $view = \Drupal::entityTypeManager()
    ->getStorage('view')
    ->load('test_filter_datetime');
  $field_end = static::$field_name . '_end_value';
  $display = $view
    ->getDisplay('default');
  $filter_end_date = $display['display_options']['filters'][static::$field_name . '_value'];
  $filter_end_date['id'] = $field_end;
  $filter_end_date['field'] = $field_end;
  $view
    ->getDisplay('default')['display_options']['filters'][$field_end] = $filter_end_date;
  $view
    ->save();
}