Chris@18
|
1 <?php
|
Chris@18
|
2
|
Chris@18
|
3 namespace Drupal\Tests\quickedit\Kernel;
|
Chris@18
|
4
|
Chris@18
|
5 use Drupal\KernelTests\KernelTestBase;
|
Chris@18
|
6 use Drupal\node\Entity\Node;
|
Chris@18
|
7 use Drupal\Tests\node\Traits\ContentTypeCreationTrait;
|
Chris@18
|
8 use Drupal\Tests\node\Traits\NodeCreationTrait;
|
Chris@18
|
9 use Drupal\Tests\user\Traits\UserCreationTrait;
|
Chris@18
|
10
|
Chris@18
|
11 /**
|
Chris@18
|
12 * Tests loading of in-place editing functionality and lazy loading of its
|
Chris@18
|
13 * in-place editors.
|
Chris@18
|
14 *
|
Chris@18
|
15 * @group quickedit
|
Chris@18
|
16 */
|
Chris@18
|
17 class QuickEditLoadingTest extends KernelTestBase {
|
Chris@18
|
18
|
Chris@18
|
19 use NodeCreationTrait;
|
Chris@18
|
20 use UserCreationTrait;
|
Chris@18
|
21 use ContentTypeCreationTrait;
|
Chris@18
|
22
|
Chris@18
|
23 /**
|
Chris@18
|
24 * {@inheritdoc}
|
Chris@18
|
25 */
|
Chris@18
|
26 protected static $modules = [
|
Chris@18
|
27 'user',
|
Chris@18
|
28 'system',
|
Chris@18
|
29 'field',
|
Chris@18
|
30 'node',
|
Chris@18
|
31 'text',
|
Chris@18
|
32 'filter',
|
Chris@18
|
33 'contextual',
|
Chris@18
|
34 'quickedit',
|
Chris@18
|
35 ];
|
Chris@18
|
36
|
Chris@18
|
37 /**
|
Chris@18
|
38 * A user with permissions to access in-place editor.
|
Chris@18
|
39 *
|
Chris@18
|
40 * @var \Drupal\user\UserInterface
|
Chris@18
|
41 */
|
Chris@18
|
42 protected $editorUser;
|
Chris@18
|
43
|
Chris@18
|
44 /**
|
Chris@18
|
45 * {@inheritdoc}
|
Chris@18
|
46 */
|
Chris@18
|
47 protected function setUp() {
|
Chris@18
|
48 parent::setUp();
|
Chris@18
|
49
|
Chris@18
|
50 $this->installSchema('system', 'sequences');
|
Chris@18
|
51 $this->installEntitySchema('user');
|
Chris@18
|
52 $this->installEntitySchema('node');
|
Chris@18
|
53 $this->installConfig(['field', 'filter', 'node']);
|
Chris@18
|
54
|
Chris@18
|
55 // Create a Content type and one test node.
|
Chris@18
|
56 $this->createContentType(['type' => 'page']);
|
Chris@18
|
57 $this->createNode();
|
Chris@18
|
58
|
Chris@18
|
59 $this->editorUser = $this->createUser([
|
Chris@18
|
60 'access content',
|
Chris@18
|
61 'create page content',
|
Chris@18
|
62 'edit any page content',
|
Chris@18
|
63 'access contextual links',
|
Chris@18
|
64 'access in-place editing',
|
Chris@18
|
65 ]);
|
Chris@18
|
66 }
|
Chris@18
|
67
|
Chris@18
|
68 /**
|
Chris@18
|
69 * Tests that Quick Edit doesn't make fields rendered with display options
|
Chris@18
|
70 * editable.
|
Chris@18
|
71 */
|
Chris@18
|
72 public function testDisplayOptions() {
|
Chris@18
|
73 $node = Node::load(1);
|
Chris@18
|
74 $renderer = $this->container->get('renderer');
|
Chris@18
|
75 $this->container->get('current_user')->setAccount($this->editorUser);
|
Chris@18
|
76
|
Chris@18
|
77 $build = $node->body->view(['label' => 'inline']);
|
Chris@18
|
78 $this->setRawContent($renderer->renderRoot($build));
|
Chris@18
|
79 $elements = $this->xpath('//div[@data-quickedit-field-id]');
|
Chris@18
|
80 $this->assertFalse(!empty($elements), 'data-quickedit-field-id attribute not added when rendering field using dynamic display options.');
|
Chris@18
|
81
|
Chris@18
|
82 $build = $node->body->view('default');
|
Chris@18
|
83 $this->setRawContent($renderer->renderRoot($build));
|
Chris@18
|
84 $elements = $this->xpath('//div[@data-quickedit-field-id="node/1/body/en/default"]');
|
Chris@18
|
85 $this->assertTrue(!empty($elements), 'Body with data-quickedit-field-id attribute found.');
|
Chris@18
|
86 }
|
Chris@18
|
87
|
Chris@18
|
88 }
|