class LoadMultipleTest

Same name and namespace in other branches
  1. 11.x core/modules/taxonomy/tests/src/Kernel/LoadMultipleTest.php \Drupal\Tests\taxonomy\Kernel\LoadMultipleTest
  2. 10 core/modules/taxonomy/tests/src/Kernel/LoadMultipleTest.php \Drupal\Tests\taxonomy\Kernel\LoadMultipleTest
  3. 9 core/modules/taxonomy/tests/src/Functional/LoadMultipleTest.php \Drupal\Tests\taxonomy\Functional\LoadMultipleTest
  4. 8.9.x core/modules/taxonomy/tests/src/Functional/LoadMultipleTest.php \Drupal\Tests\taxonomy\Functional\LoadMultipleTest

Tests the loading of multiple taxonomy terms at once.

Attributes

#[Group('taxonomy')] #[RunTestsInSeparateProcesses]

Hierarchy

Expanded class hierarchy of LoadMultipleTest

File

core/modules/taxonomy/tests/src/Kernel/LoadMultipleTest.php, line 16

Namespace

Drupal\Tests\taxonomy\Kernel
View source
class LoadMultipleTest extends KernelTestBase {
  use TaxonomyTestTrait;
  
  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'taxonomy',
    'user',
    'text',
    'filter',
  ];
  
  /**
   * {@inheritdoc}
   */
  protected function setUp() : void {
    parent::setUp();
    $this->installEntitySchema('taxonomy_term');
  }
  
  /**
   * Tests loading multiple taxonomy terms by term ID and vocabulary.
   */
  public function testTaxonomyTermMultipleLoad() : void {
    // 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->assertEquals(5, $count, "Correct number of terms were loaded. {$count} terms.");
    // Load the same terms again by tid.
    $terms2 = Term::loadMultiple(array_keys($terms));
    $this->assertEquals($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->assertEquals($term->id(), $loaded_term->id(), 'Term loaded by name successfully.');
  }

}

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