annotate core/modules/field/tests/src/Kernel/FieldDisplayTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
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 }