public function TaxonomyTermReferenceItemTest::testTaxonomyTermReferenceItem

Tests using entity fields of the taxonomy term reference field type.

File

drupal/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TaxonomyTermReferenceItemTest.php, line 77
Contains \Drupal\taxonomy\Tests\TaxonomyTermReferenceItemTest.

Class

TaxonomyTermReferenceItemTest
Tests the new entity API for the taxonomy term reference field type.

Namespace

Drupal\taxonomy\Tests

Code

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', array());
  $entity->field_test_taxonomy->tid = $this->term->tid;
  $entity->name->value = $this
    ->randomName();
  $entity
    ->save();
  $entity = entity_load('entity_test', $entity
    ->id());
  $this
    ->assertTrue($entity->field_test_taxonomy instanceof FieldInterface, 'Field implements interface.');
  $this
    ->assertTrue($entity->field_test_taxonomy[0] instanceof FieldItemInterface, 'Field item implements interface.');
  $this
    ->assertEqual($entity->field_test_taxonomy->tid, $this->term->tid);
  $this
    ->assertEqual($entity->field_test_taxonomy->entity->name, $this->term->name);
  $this
    ->assertEqual($entity->field_test_taxonomy->entity
    ->id(), $tid);
  $this
    ->assertEqual($entity->field_test_taxonomy->entity
    ->uuid(), $this->term
    ->uuid());

  // Change the name of the term via the reference.
  $new_name = $this
    ->randomName();
  $entity->field_test_taxonomy->entity->name = $new_name;
  $entity->field_test_taxonomy->entity
    ->save();

  // Verify it is the correct name.
  $term = entity_load('taxonomy_term', $tid);
  $this
    ->assertEqual($term->name, $new_name);

  // Make sure the computed term reflects updates to the term id.
  $term2 = entity_create('taxonomy_term', array(
    'name' => $this
      ->randomName(),
    'vid' => $this->term->vid,
    'langcode' => LANGUAGE_NOT_SPECIFIED,
  ));
  $term2
    ->save();
  $entity->field_test_taxonomy->tid = $term2->tid;
  $this
    ->assertEqual($entity->field_test_taxonomy->entity
    ->id(), $term2->tid);
  $this
    ->assertEqual($entity->field_test_taxonomy->entity->name, $term2->name);
}