function TermTest::testTaxonomyGetTermByName

Same name in other branches
  1. 9 core/modules/taxonomy/tests/src/Functional/TermTest.php \Drupal\Tests\taxonomy\Functional\TermTest::testTaxonomyGetTermByName()

Test taxonomy_term_load_multiple_by_name().

File

core/modules/taxonomy/tests/src/Functional/TermTest.php, line 498

Class

TermTest
Tests load, save and delete for taxonomy terms.

Namespace

Drupal\Tests\taxonomy\Functional

Code

public function testTaxonomyGetTermByName() {
    $term = $this->createTerm($this->vocabulary);
    // Load the term with the exact name.
    $terms = taxonomy_term_load_multiple_by_name($term->getName());
    $this->assertTrue(isset($terms[$term->id()]), 'Term loaded using exact name.');
    // Load the term with space concatenated.
    $terms = taxonomy_term_load_multiple_by_name('  ' . $term->getName() . '   ');
    $this->assertTrue(isset($terms[$term->id()]), 'Term loaded with extra whitespace.');
    // Load the term with name uppercased.
    $terms = taxonomy_term_load_multiple_by_name(strtoupper($term->getName()));
    $this->assertTrue(isset($terms[$term->id()]), 'Term loaded with uppercased name.');
    // Load the term with name lowercased.
    $terms = taxonomy_term_load_multiple_by_name(strtolower($term->getName()));
    $this->assertTrue(isset($terms[$term->id()]), 'Term loaded with lowercased name.');
    // Try to load an invalid term name.
    $terms = taxonomy_term_load_multiple_by_name('Banana');
    $this->assertEmpty($terms, 'No term loaded with an invalid name.');
    // Try to load the term using a substring of the name.
    $terms = taxonomy_term_load_multiple_by_name(mb_substr($term->getName(), 2), 'No term loaded with a substring of the name.');
    $this->assertEmpty($terms);
    // Create a new term in a different vocabulary with the same name.
    $new_vocabulary = $this->createVocabulary();
    $new_term = Term::create([
        'name' => $term->getName(),
        'vid' => $new_vocabulary->id(),
    ]);
    $new_term->save();
    // Load multiple terms with the same name.
    $terms = taxonomy_term_load_multiple_by_name($term->getName());
    $this->assertCount(2, $terms, 'Two terms loaded with the same name.');
    // Load single term when restricted to one vocabulary.
    $terms = taxonomy_term_load_multiple_by_name($term->getName(), $this->vocabulary
        ->id());
    $this->assertCount(1, $terms, 'One term loaded when restricted by vocabulary.');
    $this->assertTrue(isset($terms[$term->id()]), 'Term loaded using exact name and vocabulary machine name.');
    // Create a new term with another name.
    $term2 = $this->createTerm($this->vocabulary);
    // Try to load a term by name that doesn't exist in this vocabulary but
    // exists in another vocabulary.
    $terms = taxonomy_term_load_multiple_by_name($term2->getName(), $new_vocabulary->id());
    $this->assertEmpty($terms, 'Invalid term name restricted by vocabulary machine name not loaded.');
    // Try to load terms filtering by a non-existing vocabulary.
    $terms = taxonomy_term_load_multiple_by_name($term2->getName(), 'non_existing_vocabulary');
    $this->assertCount(0, $terms, 'No terms loaded when restricted by a non-existing vocabulary.');
}

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