public function EntityReferenceAutoCreateTest::testAutoCreate in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/field/src/Tests/EntityReference/EntityReferenceAutoCreateTest.php \Drupal\field\Tests\EntityReference\EntityReferenceAutoCreateTest::testAutoCreate()
Tests that the autocomplete input element appears and the creation of a new entity.
File
- core/
modules/ field/ src/ Tests/ EntityReference/ EntityReferenceAutoCreateTest.php, line 91 - Contains \Drupal\field\Tests\EntityReference\EntityReferenceAutoCreateTest.
Class
- EntityReferenceAutoCreateTest
- Tests creating new entity (e.g. taxonomy-term) from an autocomplete widget.
Namespace
Drupal\field\Tests\EntityReferenceCode
public function testAutoCreate() {
$user1 = $this
->drupalCreateUser(array(
'access content',
"create {$this->referencingType} content",
));
$this
->drupalLogin($user1);
$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
->assertFalse($result, 'Referenced node does not exist yet.');
$edit = array(
'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
->assertTrue($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.');
}