/**
  * Tests using entity fields of the taxonomy term reference field type.
  */
 public function testTaxonomyTermReferenceItem()
 {
     $tid = $this->term->id();
     // Just being able to create the entity like this verifies a lot of code.
     $entity = entity_create('entity_test');
     $entity->field_test_taxonomy->target_id = $this->term->id();
     $entity->name->value = $this->randomMachineName();
     $entity->save();
     $entity = entity_load('entity_test', $entity->id());
     $this->assertTrue($entity->field_test_taxonomy instanceof FieldItemListInterface, 'Field implements interface.');
     $this->assertTrue($entity->field_test_taxonomy[0] instanceof FieldItemInterface, 'Field item implements interface.');
     $this->assertEqual($entity->field_test_taxonomy->target_id, $this->term->id(), 'Field item contains the expected TID.');
     $this->assertEqual($entity->field_test_taxonomy->entity->getName(), $this->term->getName(), 'Field item entity contains the expected name.');
     $this->assertEqual($entity->field_test_taxonomy->entity->id(), $tid, 'Field item entity contains the expected ID.');
     $this->assertEqual($entity->field_test_taxonomy->entity->uuid(), $this->term->uuid(), 'Field item entity contains the expected UUID.');
     // Change the name of the term via the reference.
     $new_name = $this->randomMachineName();
     $entity->field_test_taxonomy->entity->setName($new_name);
     $entity->field_test_taxonomy->entity->save();
     // Verify it is the correct name.
     $term = Term::load($tid);
     $this->assertEqual($term->getName(), $new_name, 'The name of the term was changed.');
     // Make sure the computed term reflects updates to the term id.
     $term2 = entity_create('taxonomy_term', array('name' => $this->randomMachineName(), 'vid' => $this->term->getVocabularyId(), 'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED));
     $term2->save();
     $entity->field_test_taxonomy->target_id = $term2->id();
     $this->assertEqual($entity->field_test_taxonomy->entity->id(), $term2->id(), 'Field item entity contains the new TID.');
     $this->assertEqual($entity->field_test_taxonomy->entity->getName(), $term2->getName(), 'Field item entity contains the new name.');
     // Test sample item generation.
     $entity = entity_create('entity_test');
     $entity->field_test_taxonomy->generateSampleItems();
     $this->entityValidateAndSave($entity);
 }
 /**
  * Remove menu entries associate with the vocabulary of this term.
  *
  * @param \Drupal\taxonomy\TermInterface $term
  */
 public function removeTaxonomyMenuEntries(TermInterface $term, $rebuild_all = TRUE)
 {
     // Load relevant taxonomy menus.
     $tax_menus = $this->getTermMenusByVocabulary($term->getVocabularyId());
     foreach ($tax_menus as $menu) {
         foreach (array_keys($menu->getLinks([], TRUE)) as $plugin_id) {
             if (!$rebuild_all) {
                 $plugin_id_parts = explode('.', $plugin_id);
                 $term_id = array_pop($plugin_id_parts);
                 if ($term->id() != $term_id) {
                     continue;
                 }
             }
             $this->manager->removeDefinition($plugin_id, FALSE);
         }
     }
 }