class FieldTestBase

Same name in this branch
  1. 9 core/modules/field/tests/src/Functional/Views/FieldTestBase.php \Drupal\Tests\field\Functional\Views\FieldTestBase
Same name and namespace in other branches
  1. 8.9.x core/modules/field/src/Tests/Views/FieldTestBase.php \Drupal\field\Tests\Views\FieldTestBase
  2. 8.9.x core/modules/field/src/Tests/FieldTestBase.php \Drupal\field\Tests\FieldTestBase
  3. 11.x core/modules/field/tests/src/Functional/Views/FieldTestBase.php \Drupal\Tests\field\Functional\Views\FieldTestBase
  4. 11.x core/modules/field/tests/src/Functional/FieldTestBase.php \Drupal\Tests\field\Functional\FieldTestBase
  5. 10 core/modules/field/tests/src/Functional/Views/FieldTestBase.php \Drupal\Tests\field\Functional\Views\FieldTestBase
  6. 10 core/modules/field/tests/src/Functional/FieldTestBase.php \Drupal\Tests\field\Functional\FieldTestBase
  7. 8.9.x core/modules/field/tests/src/Functional/Views/FieldTestBase.php \Drupal\Tests\field\Functional\Views\FieldTestBase
  8. 8.9.x core/modules/field/tests/src/Functional/FieldTestBase.php \Drupal\Tests\field\Functional\FieldTestBase

Parent class for Field API tests.

Hierarchy

Expanded class hierarchy of FieldTestBase

4 files declare their use of FieldTestBase
OptionsDynamicValuesTestBase.php in core/modules/options/tests/src/Functional/OptionsDynamicValuesTestBase.php
OptionsFieldUITest.php in core/modules/options/tests/src/Functional/OptionsFieldUITest.php
OptionsFloatFieldImportTest.php in core/modules/options/tests/src/Functional/OptionsFloatFieldImportTest.php
OptionsWidgetsTest.php in core/modules/options/tests/src/Functional/OptionsWidgetsTest.php

File

core/modules/field/tests/src/Functional/FieldTestBase.php, line 13

Namespace

Drupal\Tests\field\Functional
View source
abstract class FieldTestBase extends BrowserTestBase {
  
  /**
   * Generate random values for a field_test field.
   *
   * @param $cardinality
   *   Number of values to generate.
   *
   * @return array
   *   An array of random values, in the format expected for field values.
   */
  public function _generateTestFieldValues($cardinality) {
    $values = [];
    for ($i = 0; $i < $cardinality; $i++) {
      // field_test fields treat 0 as 'empty value'.
      $values[$i]['value'] = mt_rand(1, 127);
    }
    return $values;
  }
  
  /**
   * Assert that a field has the expected values in an entity.
   *
   * This function only checks a single column in the field values.
   *
   * @param \Drupal\Core\Entity\EntityInterface $entity
   *   The entity to test.
   * @param $field_name
   *   The name of the field to test
   * @param $expected_values
   *   The array of expected values.
   * @param $langcode
   *   (Optional) The language code for the values. Defaults to
   *   \Drupal\Core\Language\LanguageInterface::LANGCODE_DEFAULT.
   * @param $column
   *   (Optional) The name of the column to check. Defaults to 'value'.
   */
  public function assertFieldValues(EntityInterface $entity, $field_name, $expected_values, $langcode = LanguageInterface::LANGCODE_DEFAULT, $column = 'value') {
    // Re-load the entity to make sure we have the latest changes.
    $storage = $this->container
      ->get('entity_type.manager')
      ->getStorage($entity->getEntityTypeId());
    $storage->resetCache([
      $entity->id(),
    ]);
    $e = $storage->load($entity->id());
    $field = $values = $e->getTranslation($langcode)->{$field_name};
    // Filter out empty values so that they don't mess with the assertions.
    $field->filterEmptyItems();
    $values = $field->getValue();
    $this->assertSameSize($expected_values, $values, 'Expected number of values were saved.');
    foreach ($expected_values as $key => $value) {
      $this->assertEquals($value, $values[$key][$column], new FormattableMarkup('Value @value was saved correctly.', [
        '@value' => $value,
      ]));
    }
  }

}

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