public function ListControllerTest::testListController in Entity Usage 8
Same name and namespace in other branches
- 8.4 tests/src/FunctionalJavascript/ListControllerTest.php \Drupal\Tests\entity_usage\FunctionalJavascript\ListControllerTest::testListController()
- 8.2 tests/src/FunctionalJavascript/ListControllerTest.php \Drupal\Tests\entity_usage\FunctionalJavascript\ListControllerTest::testListController()
- 8.3 tests/src/FunctionalJavascript/ListControllerTest.php \Drupal\Tests\entity_usage\FunctionalJavascript\ListControllerTest::testListController()
Tests the page listing the usage of entities.
@covers \Drupal\entity_usage\Controller\ListUsageController::listUsagePage
File
- tests/
src/ FunctionalJavascript/ ListControllerTest.php, line 34
Class
- ListControllerTest
- Tests the page listing the usage of a given entity.
Namespace
Drupal\Tests\entity_usage\FunctionalJavascriptCode
public function testListController() {
$page = $this
->getSession()
->getPage();
// Create node 1.
$this
->drupalGet('/node/add/eu_test_ct');
$page
->fillField('title[0][value]', 'Node 1');
$page
->pressButton('Save');
$this
->assertSession()
->pageTextContains('eu_test_ct Node 1 has been created.');
$node1 = Node::load(1);
$this
->saveHtmlOutput();
// Create node 2 referencing node 1 using reference field.
$this
->drupalGet('/node/add/eu_test_ct');
$page
->fillField('title[0][value]', 'Node 2');
$page
->fillField('field_eu_test_related_nodes[0][target_id]', 'Node 1 (1)');
$page
->pressButton('Save');
$this
->assertSession()
->pageTextContains('eu_test_ct Node 2 has been created.');
$node2 = Node::load(2);
$this
->saveHtmlOutput();
// Create node 3 also referencing node 1 in an embed text field.
$uuid_node1 = $node1
->uuid();
$embedded_text = '<drupal-entity data-embed-button="node" data-entity-embed-display="entity_reference:entity_reference_label" data-entity-embed-display-settings="{"link":1}" data-entity-type="node" data-entity-uuid="' . $uuid_node1 . '"></drupal-entity>';
$node3 = Node::create([
'type' => 'eu_test_ct',
'title' => 'Node 3',
'field_eu_test_rich_text' => [
'value' => $embedded_text,
'format' => 'eu_test_text_format',
],
]);
$node3
->save();
// Visit the page that tracks usage of node 1 and check everything is there.
$this
->drupalGet('/admin/content/entity-usage/node/1');
$this
->assertSession()
->pageTextContains('Entity usage information for Node 1');
// Check table headers are present.
$this
->assertSession()
->pageTextContains('Referencing entity');
$this
->assertSession()
->pageTextContains('Referencing entity type');
$this
->assertSession()
->pageTextContains('Referencing method');
$this
->assertSession()
->pageTextContains('Count');
// Check both referencing nodes are linked.
$this
->assertSession()
->linkExists('Node 2');
$this
->assertSession()
->linkByHrefExists('/node/2');
$this
->assertSession()
->linkExists('Node 3');
$this
->assertSession()
->linkByHrefExists('/node/3');
// Make sure that all elements of the table are the expected ones.
$first_row_title = $this
->xpath('//table/tbody/tr[1]/td[1]')[0];
$this
->assertEquals('Node 2', $first_row_title
->getText());
$first_row_type = $this
->xpath('//table/tbody/tr[1]/td[2]')[0];
$this
->assertEquals('node', $first_row_type
->getText());
$first_row_method = $this
->xpath('//table/tbody/tr[1]/td[3]')[0];
$this
->assertEquals('entity_reference', $first_row_method
->getText());
$first_row_count = $this
->xpath('//table/tbody/tr[1]/td[4]')[0];
$this
->assertEquals('1', $first_row_count
->getText());
$second_row_title = $this
->xpath('//table/tbody/tr[2]/td[1]')[0];
$this
->assertEquals('Node 3', $second_row_title
->getText());
$second_row_type = $this
->xpath('//table/tbody/tr[2]/td[2]')[0];
$this
->assertEquals('node', $second_row_type
->getText());
$second_row_method = $this
->xpath('//table/tbody/tr[2]/td[3]')[0];
$this
->assertEquals('entity_embed', $second_row_method
->getText());
$second_row_count = $this
->xpath('//table/tbody/tr[2]/td[4]')[0];
$this
->assertEquals('1', $second_row_count
->getText());
}