class ViewTestData

Provides tests view data and the base test schema with sample data records.

The methods will be used by both views test base classes.

Hierarchy

Expanded class hierarchy of ViewTestData

See also

\Drupal\views\Tests\ViewUnitTestBase.

\Drupal\views\Tests\ViewTestBase.

File

drupal/core/modules/views/lib/Drupal/views/Tests/ViewTestData.php, line 20
Contains \Drupal\views\Tests\ViewTestData.

Namespace

Drupal\views\Tests
View source
class ViewTestData {

  /**
   * Imports test views from config.
   *
   * @param string $class
   *   The name of the test class.
   * @param array $modules
   *   (optional) The module directories to look in for test views.
   *   The views_test_config module will always be checked.
   *
   * @see config_install_default_config()
   */
  public static function importTestViews($class, $modules = array()) {
    $modules[] = 'views_test_config';
    $views = array();
    while ($class) {
      if (property_exists($class, 'testViews')) {
        $views = array_merge($views, $class::$testViews);
      }
      $class = get_parent_class($class);
    }
    if (!empty($views)) {
      $target_storage = drupal_container()
        ->get('config.storage');
      $config_changes = array(
        'delete' => array(),
        'create' => array(),
        'change' => array(),
      );
      foreach ($modules as $module) {
        $config_dir = drupal_get_path('module', $module) . '/test_views';
        $source_storage = new FileStorage($config_dir);
        foreach ($source_storage
          ->listAll() as $config_name) {
          list(, , $id) = explode('.', $config_name);
          if (in_array($id, $views)) {
            $config_changes['create'][] = $config_name;
          }
        }
      }
      if (!empty($config_changes['create'])) {
        $remaining_changes = config_import_invoke_owner($config_changes, $source_storage, $target_storage);
        config_sync_changes($remaining_changes, $source_storage, $target_storage);
      }
    }
  }

  /**
   * Returns the schema definition.
   */
  public static function schemaDefinition() {
    $schema['views_test_data'] = array(
      'description' => 'Basic test table for Views tests.',
      'fields' => array(
        'id' => array(
          'type' => 'serial',
          'unsigned' => TRUE,
          'not null' => TRUE,
        ),
        'name' => array(
          'description' => "A person's name",
          'type' => 'varchar',
          'length' => 255,
          'not null' => TRUE,
          'default' => '',
        ),
        'age' => array(
          'description' => "The person's age",
          'type' => 'int',
          'unsigned' => TRUE,
          'not null' => TRUE,
          'default' => 0,
        ),
        'job' => array(
          'description' => "The person's job",
          'type' => 'varchar',
          'length' => 255,
          'not null' => TRUE,
          'default' => 'Undefined',
        ),
        'created' => array(
          'description' => "The creation date of this record",
          'type' => 'int',
          'unsigned' => TRUE,
          'not null' => TRUE,
          'default' => 0,
        ),
      ),
      'primary key' => array(
        'id',
      ),
      'unique keys' => array(
        'name' => array(
          'name',
        ),
      ),
      'indexes' => array(
        'ages' => array(
          'age',
        ),
      ),
    );
    return $schema;
  }

  /**
   * Returns the views data definition.
   */
  public static function viewsData() {

    // Declaration of the base table.
    $data['views_test_data']['table'] = array(
      'group' => t('Views test'),
      'base' => array(
        'field' => 'id',
        'title' => t('Views test data'),
        'help' => t('Users who have created accounts on your site.'),
      ),
    );

    // Declaration of fields.
    $data['views_test_data']['id'] = array(
      'title' => t('ID'),
      'help' => t('The test data ID'),
      'field' => array(
        'id' => 'numeric',
        'click sortable' => TRUE,
      ),
      'argument' => array(
        'id' => 'numeric',
      ),
      'filter' => array(
        'id' => 'numeric',
      ),
      'sort' => array(
        'id' => 'standard',
      ),
    );
    $data['views_test_data']['name'] = array(
      'title' => t('Name'),
      'help' => t('The name of the person'),
      'field' => array(
        'id' => 'standard',
        'click sortable' => TRUE,
      ),
      'argument' => array(
        'id' => 'string',
      ),
      'filter' => array(
        'id' => 'string',
      ),
      'sort' => array(
        'id' => 'standard',
      ),
    );
    $data['views_test_data']['age'] = array(
      'title' => t('Age'),
      'help' => t('The age of the person'),
      'field' => array(
        'id' => 'numeric',
        'click sortable' => TRUE,
      ),
      'argument' => array(
        'id' => 'numeric',
      ),
      'filter' => array(
        'id' => 'numeric',
      ),
      'sort' => array(
        'id' => 'standard',
      ),
    );
    $data['views_test_data']['job'] = array(
      'title' => t('Job'),
      'help' => t('The job of the person'),
      'field' => array(
        'id' => 'standard',
        'click sortable' => TRUE,
      ),
      'argument' => array(
        'id' => 'string',
      ),
      'filter' => array(
        'id' => 'string',
      ),
      'sort' => array(
        'id' => 'standard',
      ),
    );
    $data['views_test_data']['created'] = array(
      'title' => t('Created'),
      'help' => t('The creation date of this record'),
      'field' => array(
        'id' => 'date',
        'click sortable' => TRUE,
      ),
      'argument' => array(
        'id' => 'date',
      ),
      'filter' => array(
        'id' => 'date',
      ),
      'sort' => array(
        'id' => 'date',
      ),
    );
    return $data;
  }

  /**
   * Returns a very simple test dataset.
   */
  public static function dataSet() {
    return array(
      array(
        'name' => 'John',
        'age' => 25,
        'job' => 'Singer',
        'created' => gmmktime(0, 0, 0, 1, 1, 2000),
      ),
      array(
        'name' => 'George',
        'age' => 27,
        'job' => 'Singer',
        'created' => gmmktime(0, 0, 0, 1, 2, 2000),
      ),
      array(
        'name' => 'Ringo',
        'age' => 28,
        'job' => 'Drummer',
        'created' => gmmktime(6, 30, 30, 1, 1, 2000),
      ),
      array(
        'name' => 'Paul',
        'age' => 26,
        'job' => 'Songwriter',
        'created' => gmmktime(6, 0, 0, 1, 1, 2000),
      ),
      array(
        'name' => 'Meredith',
        'age' => 30,
        'job' => 'Speaker',
        'created' => gmmktime(6, 30, 10, 1, 1, 2000),
      ),
    );
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ViewTestData::dataSet public static function Returns a very simple test dataset.
ViewTestData::importTestViews public static function Imports test views from config.
ViewTestData::schemaDefinition public static function Returns the schema definition.
ViewTestData::viewsData public static function Returns the views data definition.