Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / modules / contrib / media_entity / tests / src / FunctionalJavascript / MediaIefIntegrationTest.php
diff --git a/web/modules/contrib/media_entity/tests/src/FunctionalJavascript/MediaIefIntegrationTest.php b/web/modules/contrib/media_entity/tests/src/FunctionalJavascript/MediaIefIntegrationTest.php
new file mode 100644 (file)
index 0000000..4388a66
--- /dev/null
@@ -0,0 +1,121 @@
+<?php
+
+namespace Drupal\Tests\media_entity\FunctionalJavascript;
+
+use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\field\Entity\FieldConfig;
+use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\media_entity\Entity\Media;
+
+/**
+ * Tests the integration between Inline Entity Form and Media Entity.
+ *
+ * @group media_entity
+ */
+class MediaIefIntegrationTest extends MediaEntityJavascriptTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['inline_entity_form'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    /** @var \Drupal\media_entity\MediaBundleInterface $media_bundle */
+    $media_bundle = $this->drupalCreateMediaBundle();
+
+    // Create a new content type.
+    $values = [
+      'name' => 'Media entity CT',
+      'title_label' => 'An example Custom Content type.',
+      'type' => 'media_entity_ct',
+    ];
+    $content_type = $this->createContentType($values);
+    // Create an entity_reference field.
+    FieldStorageConfig::create([
+      'field_name' => 'ref_media_entities',
+      'type' => 'entity_reference',
+      'entity_type' => 'node',
+      'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
+      'settings' => [
+        'target_type' => 'media',
+      ],
+    ])->save();
+    FieldConfig::create([
+      'field_name' => 'ref_media_entities',
+      'field_type' => 'entity_reference',
+      'entity_type' => 'node',
+      'bundle' => $content_type->id(),
+      'label' => 'Media referenced',
+      'settings' => [
+        'handler' => 'default:media',
+        'handler_settings' => [
+          'target_bundles' => [
+            $media_bundle->id() => $media_bundle->id(),
+          ],
+          'sort' => [
+            'field' => '_none',
+          ],
+          'auto_create' => FALSE,
+          'auto_create_bundle' => $media_bundle->id(),
+        ],
+      ],
+    ])->save();
+
+    // Set widget to inline_entity_form.
+    /** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $form_display */
+    $form_display = $this->container->get('entity_type.manager')
+      ->getStorage('entity_form_display')
+      ->load('node.media_entity_ct.default');
+    $form_display->setComponent('ref_media_entities', [
+      'type' => 'inline_entity_form_complex',
+      'settings' => [],
+    ])->save();
+
+  }
+
+  /**
+   * Tests inline_entity_form integration with media entities.
+   */
+  public function testMediaIefIntegration() {
+
+    $session = $this->getSession();
+    $page = $session->getPage();
+    $assert_session = $this->assertSession();
+
+    // Open up a node form and check the IEF widget.
+    $this->drupalGet('/node/add/media_entity_ct');
+    $assert_session->buttonExists('edit-ref-media-entities-actions-ief-add');
+    $page->pressButton('edit-ref-media-entities-actions-ief-add');
+    $assert_session->assertWaitOnAjaxRequest();
+
+    // Check the presence of the entity's label field.
+    $page->findField('ref_media_entities[form][inline_entity_form][name][0][value]')->isVisible();
+
+    // Submit the form to create a media entity and verify that it is correctly
+    // created.
+    $media_name = $this->randomMachineName();
+    $page->fillField('ref_media_entities[form][inline_entity_form][name][0][value]', $media_name);
+    $page->fillField('ref_media_entities[form][inline_entity_form][uid][0][target_id]', $this->adminUser->getDisplayName() . ' (' . $this->adminUser->id() . ')');
+    $page->pressButton('Create media');
+    $assert_session->assertWaitOnAjaxRequest();
+
+    // We need to save the node in order for IEF to do its thing.
+    $page->fillField('title[0][value]', $this->randomString());
+    $page->pressButton('Save');
+
+    $media_id = $this->container->get('entity.query')->get('media')->execute();
+    $media_id = reset($media_id);
+    /** @var \Drupal\media_entity\MediaInterface $media */
+    $media = Media::load($media_id);
+    $this->assertEquals($media_name, $media->label(), 'A media inside IEF was correctly created.');
+
+  }
+
+}