function TmgmtEntityTestTrait::createTaxonomyTerm

Creates a taxonomy term of a given vocabulary.

It uses $this->field_names to populate content of attached fields. You can access fields values using $this->field_names['taxonomy_term'][$vocabulary->id(].

Parameters

object $vocabulary: Vocabulary object for which the term should be created.

Return value

object Newly created node object.

File

tests/src/Functional/TmgmtEntityTestTrait.php, line 199

Class

TmgmtEntityTestTrait
Utility test case class with helper methods to create entities and their fields with populated translatable content. Extend this class if you create tests in which you need Drupal entities and/or fields.

Namespace

Drupal\Tests\tmgmt\Functional

Code

function createTaxonomyTerm(VocabularyInterface $vocabulary) {
  $term = Term::create(array(
    'name' => $this
      ->randomMachineName(),
    'description' => $this
      ->randomMachineName(),
    'vid' => $vocabulary
      ->id(),
    'langcode' => 'en',
  ));
  foreach ($this->field_names['taxonomy_term'][$vocabulary
    ->id()] as $field_name) {
    $field_definition = $term
      ->getFieldDefinition($field_name);
    $cardinality = $field_definition
      ->getFieldStorageDefinition()
      ->getCardinality() == FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED ? 1 : $field_definition
      ->getCardinality();
    $field_lang = $field_definition
      ->isTranslatable() ? 'en' : LanguageInterface::LANGCODE_DEFAULT;

    // Create two deltas for each field.
    for ($delta = 0; $delta <= $cardinality; $delta++) {
      $term
        ->getTranslation($field_lang)
        ->get($field_name)
        ->get($delta)->value = $this
        ->randomMachineName(20);
      if ($field_definition
        ->getType() == 'text_with_summary') {
        $term
          ->getTranslation($field_lang)
          ->get($field_name)
          ->get($delta)->summary = $this
          ->randomMachineName(10);
      }
    }
  }
  $term
    ->save();
  return $term;
}