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