annotate core/modules/node/tests/src/Functional/NodeDisplayConfigurableTest.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents
children
rev   line source
Chris@5 1 <?php
Chris@5 2
Chris@5 3 namespace Drupal\Tests\node\Functional;
Chris@5 4
Chris@5 5 use Drupal\Core\Entity\Entity\EntityViewDisplay;
Chris@5 6
Chris@5 7 /**
Chris@5 8 * Tests making node base fields' displays configurable.
Chris@5 9 *
Chris@5 10 * @group node
Chris@5 11 */
Chris@5 12 class NodeDisplayConfigurableTest extends NodeTestBase {
Chris@5 13
Chris@5 14 /**
Chris@5 15 * Modules to enable.
Chris@5 16 *
Chris@5 17 * @var array
Chris@5 18 */
Chris@5 19 public static $modules = ['quickedit', 'rdf'];
Chris@5 20
Chris@5 21 /**
Chris@5 22 * Sets base fields to configurable display and check settings are respected.
Chris@5 23 */
Chris@5 24 public function testDisplayConfigurable() {
Chris@5 25 // Change the node type setting to show submitted by information.
Chris@5 26 $node_type = \Drupal::entityTypeManager()->getStorage('node_type')->load('page');
Chris@5 27 $node_type->setDisplaySubmitted(TRUE);
Chris@5 28 $node_type->save();
Chris@5 29
Chris@5 30 $user = $this->drupalCreateUser(['access in-place editing', 'administer nodes']);
Chris@5 31 $this->drupalLogin($user);
Chris@5 32 $node = $this->drupalCreateNode(['uid' => $user->id()]);
Chris@5 33 $assert = $this->assertSession();
Chris@5 34
Chris@5 35 // Check the node with Drupal default non-configurable display.
Chris@5 36 $this->drupalGet($node->toUrl());
Chris@5 37 $assert->elementTextContains('css', 'span.field--name-created', \Drupal::service('date.formatter')->format($node->getCreatedTime()));
Chris@5 38 $assert->elementTextContains('css', 'span.field--name-uid[data-quickedit-field-id="node/1/uid/en/full"]', $user->getAccountName());
Chris@5 39 $assert->elementTextContains('css', 'div.node__submitted', 'Submitted by');
Chris@5 40 $assert->elementTextContains('css', 'span.field--name-title', $node->getTitle());
Chris@5 41
Chris@5 42 // Enable module to make base fields' displays configurable.
Chris@5 43 \Drupal::service('module_installer')->install(['node_display_configurable_test']);
Chris@5 44
Chris@5 45 // Configure display.
Chris@5 46 $display = EntityViewDisplay::load('node.page.default');
Chris@5 47 $display->setComponent('uid',
Chris@5 48 [
Chris@5 49 'type' => 'entity_reference_label',
Chris@5 50 'label' => 'above',
Chris@5 51 'settings' => ['link' => FALSE],
Chris@5 52 ])
Chris@5 53 ->save();
Chris@5 54
Chris@5 55 // Recheck the node with configurable display.
Chris@5 56 $this->drupalGet($node->toUrl());
Chris@5 57 $assert->elementTextContains('css', 'span.field--name-created', \Drupal::service('date.formatter')->format($node->getCreatedTime()));
Chris@5 58 $assert->elementTextContains('css', 'span.field--name-uid[data-quickedit-field-id="node/1/uid/en/full"]', $user->getAccountName());
Chris@5 59 $assert->elementNotExists('css', 'span.field--name-uid a');
Chris@5 60 $assert->elementTextContains('css', 'span.field--name-title', $node->getTitle());
Chris@5 61 $assert->elementExists('css', 'span[property="schema:dateCreated"]');
Chris@5 62
Chris@5 63 // Remove from display.
Chris@5 64 $display->removeComponent('uid')
Chris@5 65 ->removeComponent('created')
Chris@5 66 ->save();
Chris@5 67
Chris@5 68 $this->drupalGet($node->toUrl());
Chris@5 69 $assert->elementNotExists('css', '.field--name-created');
Chris@5 70 $assert->elementNotExists('css', '.field--name-uid');
Chris@5 71 }
Chris@5 72
Chris@5 73 }