function EntityReferenceAutoCreateTest::testAutoCreate

Same name and namespace in other branches
  1. 9 core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAutoCreateTest.php \Drupal\Tests\field\Functional\EntityReference\EntityReferenceAutoCreateTest::testAutoCreate()
  2. 10 core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAutoCreateTest.php \Drupal\Tests\field\Functional\EntityReference\EntityReferenceAutoCreateTest::testAutoCreate()
  3. 11.x core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAutoCreateTest.php \Drupal\Tests\field\Functional\EntityReference\EntityReferenceAutoCreateTest::testAutoCreate()

Tests that the autocomplete input element appears and the creation of a new entity.

File

core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAutoCreateTest.php, line 106

Class

EntityReferenceAutoCreateTest
Tests creating new entity (e.g. taxonomy-term) from an autocomplete widget.

Namespace

Drupal\Tests\field\Functional\EntityReference

Code

public function testAutoCreate() {
    $this->drupalGet('node/add/' . $this->referencingType);
    $this->assertFieldByXPath('//input[@id="edit-test-field-0-target-id" and contains(@class, "form-autocomplete")]', NULL, 'The autocomplete input element appears.');
    $new_title = $this->randomMachineName();
    // Assert referenced node does not exist.
    $base_query = \Drupal::entityQuery('node');
    $base_query->condition('type', $this->referencedType)
        ->condition('title', $new_title);
    $query = clone $base_query;
    $result = $query->execute();
    $this->assertEmpty($result, 'Referenced node does not exist yet.');
    $edit = [
        'title[0][value]' => $this->randomMachineName(),
        'test_field[0][target_id]' => $new_title,
    ];
    $this->drupalPostForm("node/add/{$this->referencingType}", $edit, 'Save');
    // Assert referenced node was created.
    $query = clone $base_query;
    $result = $query->execute();
    $this->assertNotEmpty($result, 'Referenced node was created.');
    $referenced_nid = key($result);
    $referenced_node = Node::load($referenced_nid);
    // Assert the referenced node is associated with referencing node.
    $result = \Drupal::entityQuery('node')->condition('type', $this->referencingType)
        ->execute();
    $referencing_nid = key($result);
    $referencing_node = Node::load($referencing_nid);
    $this->assertEqual($referenced_nid, $referencing_node->test_field->target_id, 'Newly created node is referenced from the referencing node.');
    // Now try to view the node and check that the referenced node is shown.
    $this->drupalGet('node/' . $referencing_node->id());
    $this->assertText($referencing_node->label(), 'Referencing node label found.');
    $this->assertText($referenced_node->label(), 'Referenced node label found.');
}

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