public function TermTest::testTaxonomyGetTermByName in Drupal 8
Same name and namespace in other branches
- 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\FunctionalCode
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.');
}