--- /dev/null
+<?php
+
+namespace Drupal\Tests\taxonomy\Functional;
+
+use Drupal\Component\Utility\Unicode;
+use Drupal\Core\Language\LanguageInterface;
+use Drupal\taxonomy\Entity\Vocabulary;
+use Drupal\taxonomy\Entity\Term;
+
+/**
+ * Provides common helper methods for Taxonomy module tests.
+ */
+trait TaxonomyTestTrait {
+
+ /**
+ * Returns a new vocabulary with random properties.
+ */
+ public function createVocabulary() {
+ // Create a vocabulary.
+ $vocabulary = Vocabulary::create([
+ 'name' => $this->randomMachineName(),
+ 'description' => $this->randomMachineName(),
+ 'vid' => Unicode::strtolower($this->randomMachineName()),
+ 'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
+ 'weight' => mt_rand(0, 10),
+ ]);
+ $vocabulary->save();
+ return $vocabulary;
+ }
+
+ /**
+ * Returns a new term with random properties in vocabulary $vid.
+ *
+ * @param \Drupal\taxonomy\Entity\Vocabulary $vocabulary
+ * The vocabulary object.
+ * @param array $values
+ * (optional) An array of values to set, keyed by property name. If the
+ * entity type has bundles, the bundle key has to be specified.
+ *
+ * @return \Drupal\taxonomy\Entity\Term
+ * The new taxonomy term object.
+ */
+ public function createTerm(Vocabulary $vocabulary, $values = []) {
+ $filter_formats = filter_formats();
+ $format = array_pop($filter_formats);
+ $term = Term::create($values + [
+ 'name' => $this->randomMachineName(),
+ 'description' => [
+ 'value' => $this->randomMachineName(),
+ // Use the first available text format.
+ 'format' => $format->id(),
+ ],
+ 'vid' => $vocabulary->id(),
+ 'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
+ ]);
+ $term->save();
+ return $term;
+ }
+
+}