You are here

public function LoadMultipleTest::testTaxonomyTermMultipleLoad in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/taxonomy/tests/src/Functional/LoadMultipleTest.php \Drupal\Tests\taxonomy\Functional\LoadMultipleTest::testTaxonomyTermMultipleLoad()

Create a vocabulary and some taxonomy terms, ensuring they're loaded correctly using entity_load_multiple().

File

core/modules/taxonomy/tests/src/Functional/LoadMultipleTest.php, line 29

Class

LoadMultipleTest
Tests the loading of multiple taxonomy terms at once.

Namespace

Drupal\Tests\taxonomy\Functional

Code

public function testTaxonomyTermMultipleLoad() {

  // Create a vocabulary.
  $vocabulary = $this
    ->createVocabulary();

  // Create five terms in the vocabulary.
  $i = 0;
  while ($i < 5) {
    $i++;
    $this
      ->createTerm($vocabulary);
  }

  // Load the terms from the vocabulary.
  $term_storage = \Drupal::entityTypeManager()
    ->getStorage('taxonomy_term');
  $terms = $term_storage
    ->loadByProperties([
    'vid' => $vocabulary
      ->id(),
  ]);
  $count = count($terms);
  $this
    ->assertEqual($count, 5, new FormattableMarkup('Correct number of terms were loaded. @count terms.', [
    '@count' => $count,
  ]));

  // Load the same terms again by tid.
  $terms2 = Term::loadMultiple(array_keys($terms));
  $this
    ->assertEqual($count, count($terms2), 'Five terms were loaded by tid.');
  $this
    ->assertEqual($terms, $terms2, 'Both arrays contain the same terms.');

  // Remove one term from the array, then delete it.
  $deleted = array_shift($terms2);
  $deleted
    ->delete();
  $deleted_term = Term::load($deleted
    ->id());
  $this
    ->assertNull($deleted_term);

  // Load terms from the vocabulary by vid.
  $terms3 = $term_storage
    ->loadByProperties([
    'vid' => $vocabulary
      ->id(),
  ]);
  $this
    ->assertCount(4, $terms3, 'Correct number of terms were loaded.');
  $this
    ->assertFalse(isset($terms3[$deleted
    ->id()]));

  // Create a single term and load it by name.
  $term = $this
    ->createTerm($vocabulary);
  $loaded_terms = $term_storage
    ->loadByProperties([
    'name' => $term
      ->getName(),
  ]);
  $this
    ->assertCount(1, $loaded_terms, 'One term was loaded.');
  $loaded_term = reset($loaded_terms);
  $this
    ->assertEqual($term
    ->id(), $loaded_term
    ->id(), 'Term loaded by name successfully.');
}