Chris@17
|
1 <?php
|
Chris@17
|
2
|
Chris@17
|
3 namespace Drupal\Tests\field\Kernel;
|
Chris@17
|
4
|
Chris@17
|
5 use Drupal\entity_test\Entity\EntityTestRev;
|
Chris@17
|
6 use Drupal\field\Entity\FieldConfig;
|
Chris@17
|
7 use Drupal\field\Entity\FieldStorageConfig;
|
Chris@17
|
8 use Drupal\KernelTests\KernelTestBase;
|
Chris@17
|
9 use Symfony\Component\CssSelector\CssSelectorConverter;
|
Chris@17
|
10
|
Chris@17
|
11 /**
|
Chris@17
|
12 * Tests Field display.
|
Chris@17
|
13 *
|
Chris@17
|
14 * @group field
|
Chris@17
|
15 */
|
Chris@17
|
16 class FieldDisplayTest extends KernelTestBase {
|
Chris@17
|
17
|
Chris@17
|
18 /**
|
Chris@17
|
19 * Modules to enable.
|
Chris@17
|
20 *
|
Chris@17
|
21 * @var array
|
Chris@17
|
22 */
|
Chris@17
|
23 public static $modules = [
|
Chris@17
|
24 'entity_test',
|
Chris@17
|
25 'field',
|
Chris@17
|
26 'system',
|
Chris@17
|
27 'user',
|
Chris@17
|
28 ];
|
Chris@17
|
29
|
Chris@17
|
30 /**
|
Chris@17
|
31 * Test entity type name.
|
Chris@17
|
32 *
|
Chris@17
|
33 * @var string
|
Chris@17
|
34 */
|
Chris@17
|
35 protected $entityType;
|
Chris@17
|
36
|
Chris@17
|
37 /**
|
Chris@17
|
38 * Test entity bundle name.
|
Chris@17
|
39 *
|
Chris@17
|
40 * @var string
|
Chris@17
|
41 */
|
Chris@17
|
42 protected $bundle;
|
Chris@17
|
43
|
Chris@17
|
44 /**
|
Chris@17
|
45 * Test field name.
|
Chris@17
|
46 *
|
Chris@17
|
47 * @var string
|
Chris@17
|
48 */
|
Chris@17
|
49 protected $fieldName;
|
Chris@17
|
50
|
Chris@17
|
51 /**
|
Chris@17
|
52 * Entity view display.
|
Chris@17
|
53 *
|
Chris@17
|
54 * @var \Drupal\Core\Entity\Display\EntityViewDisplayInterface
|
Chris@17
|
55 */
|
Chris@17
|
56 protected $display;
|
Chris@17
|
57
|
Chris@17
|
58 /**
|
Chris@17
|
59 * {@inheritdoc}
|
Chris@17
|
60 */
|
Chris@17
|
61 protected function setUp() {
|
Chris@17
|
62 parent::setUp();
|
Chris@17
|
63
|
Chris@17
|
64 // Configure the theme system.
|
Chris@17
|
65 $this->installConfig(['system', 'field']);
|
Chris@17
|
66 $this->installEntitySchema('entity_test_rev');
|
Chris@17
|
67
|
Chris@17
|
68 $this->entityType = 'entity_test_rev';
|
Chris@17
|
69 $this->bundle = $this->entityType;
|
Chris@17
|
70 $this->fieldName = mb_strtolower($this->randomMachineName());
|
Chris@17
|
71
|
Chris@17
|
72 $field_storage = FieldStorageConfig::create([
|
Chris@17
|
73 'field_name' => $this->fieldName,
|
Chris@17
|
74 'entity_type' => $this->entityType,
|
Chris@17
|
75 'type' => 'string',
|
Chris@17
|
76 ]);
|
Chris@17
|
77 $field_storage->save();
|
Chris@17
|
78
|
Chris@17
|
79 $instance = FieldConfig::create([
|
Chris@17
|
80 'field_storage' => $field_storage,
|
Chris@17
|
81 'bundle' => $this->bundle,
|
Chris@17
|
82 'label' => $this->randomMachineName(),
|
Chris@17
|
83 ]);
|
Chris@17
|
84 $instance->save();
|
Chris@17
|
85
|
Chris@17
|
86 $values = [
|
Chris@17
|
87 'targetEntityType' => $this->entityType,
|
Chris@17
|
88 'bundle' => $this->bundle,
|
Chris@17
|
89 'mode' => 'default',
|
Chris@17
|
90 'status' => TRUE,
|
Chris@17
|
91 ];
|
Chris@17
|
92
|
Chris@17
|
93 $this->display = \Drupal::entityTypeManager()
|
Chris@17
|
94 ->getStorage('entity_view_display')
|
Chris@17
|
95 ->create($values);
|
Chris@17
|
96 $this->display->save();
|
Chris@17
|
97 }
|
Chris@17
|
98
|
Chris@17
|
99 /**
|
Chris@17
|
100 * Tests that visually hidden works with core.
|
Chris@17
|
101 */
|
Chris@17
|
102 public function testFieldVisualHidden() {
|
Chris@17
|
103 $value = $this->randomMachineName();
|
Chris@17
|
104
|
Chris@17
|
105 // Set the formatter to link to the entity.
|
Chris@17
|
106 $this->display->setComponent($this->fieldName, [
|
Chris@17
|
107 'type' => 'string',
|
Chris@17
|
108 'label' => 'visually_hidden',
|
Chris@17
|
109 'settings' => [],
|
Chris@17
|
110 ])->save();
|
Chris@17
|
111
|
Chris@17
|
112 $entity = EntityTestRev::create([]);
|
Chris@17
|
113 $entity->{$this->fieldName}->value = $value;
|
Chris@17
|
114 $entity->save();
|
Chris@17
|
115
|
Chris@17
|
116 $build = $this->display->build($entity);
|
Chris@17
|
117 $renderer = \Drupal::service('renderer');
|
Chris@17
|
118 $content = $renderer->renderPlain($build);
|
Chris@17
|
119 $this->setRawContent((string) $content);
|
Chris@17
|
120
|
Chris@17
|
121 $css_selector_converter = new CssSelectorConverter();
|
Chris@17
|
122 $elements = $this->xpath($css_selector_converter->toXPath('.visually-hidden'));
|
Chris@17
|
123 $this->assertCount(1, $elements, $content);
|
Chris@17
|
124 }
|
Chris@17
|
125
|
Chris@17
|
126 }
|