Version 1
[yaffs-website] / web / modules / contrib / video_embed_field / tests / src / Functional / EntityDisplaySetupTrait.php
diff --git a/web/modules/contrib/video_embed_field/tests/src/Functional/EntityDisplaySetupTrait.php b/web/modules/contrib/video_embed_field/tests/src/Functional/EntityDisplaySetupTrait.php
new file mode 100644 (file)
index 0000000..d7953e2
--- /dev/null
@@ -0,0 +1,120 @@
+<?php
+
+namespace Drupal\Tests\video_embed_field\Functional;
+use Drupal\field\Entity\FieldConfig;
+use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\simpletest\ContentTypeCreationTrait;
+use Drupal\simpletest\NodeCreationTrait;
+
+/**
+ * A trait for manipulating entity display.
+ */
+trait EntityDisplaySetupTrait {
+
+  use ContentTypeCreationTrait;
+  use NodeCreationTrait;
+
+  /**
+   * The field name.
+   *
+   * @var string
+   */
+  protected $fieldName;
+
+  /**
+   * The name of the content type.
+   *
+   * @var string
+   */
+  protected $contentTypeName;
+
+  /**
+   * The entity display.
+   *
+   * @var \Drupal\Core\Entity\Display\EntityViewDisplayInterface
+   */
+  protected $entityDisplay;
+
+  /**
+   * The form display.
+   *
+   * @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface
+   */
+  protected $entityFormDisplay;
+
+  /**
+   * Setup the entity displays with required fields.
+   */
+  protected function setupEntityDisplays() {
+    $this->fieldName = 'field_test_video_field';
+    $this->contentTypeName = 'test_content_type_name';
+    $this->createContentType(['type' => $this->contentTypeName]);
+    $field_storage = FieldStorageConfig::create([
+      'field_name' => $this->fieldName,
+      'entity_type' => 'node',
+      'type' => 'video_embed_field',
+      'settings' => [
+        'allowed_providers' => [],
+      ],
+    ]);
+    $field_storage->save();
+    FieldConfig::create([
+      'field_storage' => $field_storage,
+      'bundle' => $this->contentTypeName,
+      'settings' => [],
+    ])->save();
+    $this->entityDisplay = entity_get_display('node', $this->contentTypeName, 'default');
+    $this->entityFormDisplay = entity_get_form_display('node', $this->contentTypeName, 'default');
+  }
+
+  /**
+   * Set component settings for the display.
+   *
+   * @param string $type
+   *   The component to change settings for.
+   * @param array $settings
+   *   The settings to use.
+   */
+  protected function setDisplayComponentSettings($type, $settings = []) {
+    $this->entityDisplay->setComponent($this->fieldName, [
+      'type' => $type,
+      'settings' => $settings,
+    ])->save();
+  }
+
+  /**
+   * Set component settings for the form.
+   *
+   * @param string $type
+   *   The component to change settings for.
+   * @param array $settings
+   *   The settings to use.
+   */
+  protected function setFormComponentSettings($type, $settings = []) {
+    $this->entityFormDisplay
+      ->setComponent($this->fieldName, [
+        'type' => $type,
+        'settings' => $settings,
+      ])
+      ->save();
+  }
+
+  /**
+   * Create a video node using the video field.
+   *
+   * @param string $value
+   *   The video URL to use for the field value.
+   *
+   * @return \Drupal\node\NodeInterface
+   *   A node.
+   */
+  protected function createVideoNode($value) {
+    return $this->createNode([
+      'type' => $this->contentTypeName,
+      $this->fieldName => [
+        ['value' => $value],
+      ],
+    ]);
+  }
+
+}