You are here

function TermTest::testTaxonomyTermHierarchy in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/taxonomy/src/Tests/TermTest.php \Drupal\taxonomy\Tests\TermTest::testTaxonomyTermHierarchy()

Test terms in a single and multiple hierarchy.

File

core/modules/taxonomy/src/Tests/TermTest.php, line 84
Contains \Drupal\taxonomy\Tests\TermTest.

Class

TermTest
Tests load, save and delete for taxonomy terms.

Namespace

Drupal\taxonomy\Tests

Code

function testTaxonomyTermHierarchy() {

  // Create two taxonomy terms.
  $term1 = $this
    ->createTerm($this->vocabulary);
  $term2 = $this
    ->createTerm($this->vocabulary);

  // Get the taxonomy storage.
  $taxonomy_storage = $this->container
    ->get('entity.manager')
    ->getStorage('taxonomy_term');

  // Check that hierarchy is flat.
  $vocabulary = Vocabulary::load($this->vocabulary
    ->id());
  $this
    ->assertEqual(0, $vocabulary
    ->getHierarchy(), 'Vocabulary is flat.');

  // Edit $term2, setting $term1 as parent.
  $edit = array();
  $edit['parent[]'] = array(
    $term1
      ->id(),
  );
  $this
    ->drupalPostForm('taxonomy/term/' . $term2
    ->id() . '/edit', $edit, t('Save'));

  // Check the hierarchy.
  $children = $taxonomy_storage
    ->loadChildren($term1
    ->id());
  $parents = $taxonomy_storage
    ->loadParents($term2
    ->id());
  $this
    ->assertTrue(isset($children[$term2
    ->id()]), 'Child found correctly.');
  $this
    ->assertTrue(isset($parents[$term1
    ->id()]), 'Parent found correctly.');

  // Load and save a term, confirming that parents are still set.
  $term = Term::load($term2
    ->id());
  $term
    ->save();
  $parents = $taxonomy_storage
    ->loadParents($term2
    ->id());
  $this
    ->assertTrue(isset($parents[$term1
    ->id()]), 'Parent found correctly.');

  // Create a third term and save this as a parent of term2.
  $term3 = $this
    ->createTerm($this->vocabulary);
  $term2->parent = array(
    $term1
      ->id(),
    $term3
      ->id(),
  );
  $term2
    ->save();
  $parents = $taxonomy_storage
    ->loadParents($term2
    ->id());
  $this
    ->assertTrue(isset($parents[$term1
    ->id()]) && isset($parents[$term3
    ->id()]), 'Both parents found successfully.');
}