You are here

EntityViewsDataUpdateTest.php in Drupal 8

File

core/modules/views/tests/src/Functional/Update/EntityViewsDataUpdateTest.php
View source
<?php

namespace Drupal\Tests\views\Functional\Update;

use Drupal\FunctionalTests\Update\UpdatePathTestBase;
use Drupal\views\Views;

/**
 * Tests the upgrade path for views field plugins.
 *
 * @see https://www.drupal.org/node/2455125
 *
 * @group Update
 * @group legacy
 */
class EntityViewsDataUpdateTest extends UpdatePathTestBase {

  /**
   * {@inheritdoc}
   */
  protected function setDatabaseDumpFiles() {
    $this->databaseDumpFiles = [
      __DIR__ . '/../../../../../system/tests/fixtures/update/drupal-8.bare.standard.php.gz',
      __DIR__ . '/../../../../../system/tests/fixtures/update/drupal-8.views-entity-views-data-2455125.php',
    ];
  }

  /**
   * Tests that field plugins are updated properly.
   */
  public function testUpdateHookN() {
    $this
      ->runUpdates();

    // Load and initialize our test view.
    $view = Views::getView('update_test');
    $view
      ->initHandlers();

    // Extract the fields from the test view that were updated.

    /** @var \Drupal\views\Plugin\views\field\EntityField $field */
    $created = $view->field['created'];

    /** @var \Drupal\views\Plugin\views\field\EntityField $field */
    $created_1 = $view->field['created_1'];

    /** @var \Drupal\views\Plugin\views\field\EntityField $field */
    $created_2 = $view->field['created_2'];

    // Make sure the plugins were converted from date to field.
    $this
      ->assertEqual($created
      ->getPluginId(), 'field', 'created has correct plugin_id');
    $this
      ->assertEqual($created_1
      ->getPluginId(), 'field', 'created has correct plugin_id');
    $this
      ->assertEqual($created_2
      ->getPluginId(), 'field', 'created has correct plugin_id');

    // Check options on 'created'.
    $options = $created->options;
    $this
      ->assertEqual($options['type'], 'timestamp');
    $this
      ->assertFalse(array_key_exists('date_format', $options));
    $this
      ->assertFalse(array_key_exists('custom_date_format', $options));
    $this
      ->assertFalse(array_key_exists('timezone', $options));
    $this
      ->assertEqual($options['settings']['date_format'], 'long');
    $this
      ->assertEqual($options['settings']['custom_date_format'], '');
    $this
      ->assertEqual($options['settings']['timezone'], 'Africa/Abidjan');

    // Check options on 'created'.
    $options = $created_1->options;
    $this
      ->assertEqual($options['type'], 'timestamp_ago');
    $this
      ->assertFalse(array_key_exists('date_format', $options));
    $this
      ->assertFalse(array_key_exists('custom_date_format', $options));
    $this
      ->assertFalse(array_key_exists('timezone', $options));
    $this
      ->assertEqual($options['settings']['future_format'], '@interval');
    $this
      ->assertEqual($options['settings']['past_format'], '@interval');
    $this
      ->assertEqual($options['settings']['granularity'], 2);

    // Check options on 'created'.
    $options = $created_2->options;
    $this
      ->assertEqual($options['type'], 'timestamp_ago');
    $this
      ->assertFalse(array_key_exists('date_format', $options));
    $this
      ->assertFalse(array_key_exists('custom_date_format', $options));
    $this
      ->assertFalse(array_key_exists('timezone', $options));
    $this
      ->assertEqual($options['settings']['future_format'], '@interval hence');
    $this
      ->assertEqual($options['settings']['past_format'], '@interval ago');
    $this
      ->assertEqual($options['settings']['granularity'], 2);
  }

}

Classes

Namesort descending Description
EntityViewsDataUpdateTest Tests the upgrade path for views field plugins.