diff --git a/core/modules/media/src/Form/EditorMediaDialog.php b/core/modules/media/src/Form/EditorMediaDialog.php index 450c7157a4da7d1f61489b910ccd3f5c964e5730..efe9cccbbb44984e5d88baab5eeafbe61b7c5868 100644 --- a/core/modules/media/src/Form/EditorMediaDialog.php +++ b/core/modules/media/src/Form/EditorMediaDialog.php @@ -173,7 +173,7 @@ public function buildForm(array $form, FormStateInterface $form_state, EditorInt ]; $view_mode_options = array_intersect_key($this->entityDisplayRepository->getViewModeOptions('media'), $media_embed_filter->settings['allowed_view_modes']); - $default_view_mode = static::getViewModeDefaultValue($view_mode_options, $media_embed_filter, $media_embed_element['data-view-mode']); + $default_view_mode = static::getViewModeDefaultValue($view_mode_options, $media_embed_filter, $media_embed_element['data-view-mode'] ?? NULL); $form['view_mode'] = [ '#title' => $this->t("Display"), diff --git a/core/modules/media/tests/src/Kernel/EditorMediaDialogTest.php b/core/modules/media/tests/src/Kernel/EditorMediaDialogTest.php new file mode 100644 index 0000000000000000000000000000000000000000..ee3e4df6abe3814ac5269ca777ce49aef89d5caa --- /dev/null +++ b/core/modules/media/tests/src/Kernel/EditorMediaDialogTest.php @@ -0,0 +1,92 @@ +<?php + +namespace Drupal\Tests\media\Kernel; + +use Drupal\Core\Form\FormState; +use Drupal\editor\EditorInterface; +use Drupal\filter\Entity\FilterFormat; +use Drupal\KernelTests\KernelTestBase; +use Drupal\media\Entity\Media; +use Drupal\media\Form\EditorMediaDialog; +use Drupal\Tests\media\Traits\MediaTypeCreationTrait; + +/** + * @coversDefaultClass \Drupal\media\Form\EditorMediaDialog + * @group media + */ +class EditorMediaDialogTest extends KernelTestBase { + + use MediaTypeCreationTrait; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'field', + 'file', + 'filter', + 'image', + 'media', + 'media_test_source', + 'system', + 'user', + ]; + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + + $this->installSchema('file', ['file_usage']); + $this->installEntitySchema('file'); + $this->installEntitySchema('media'); + $this->installEntitySchema('user'); + } + + /** + * Tests that the form builds successfully. + * + * @covers ::buildForm + */ + public function testBuildForm() { + $format = FilterFormat::create([ + 'filters' => [ + 'media_embed' => ['status' => TRUE], + ], + ]); + + $editor = $this->prophesize(EditorInterface::class); + $editor->getFilterFormat()->willReturn($format); + + // Create a sample media entity to be embedded. + $media = Media::create([ + 'bundle' => $this->createMediaType('test')->id(), + 'name' => 'Screaming hairy armadillo', + 'field_media_test' => $this->randomString(), + ]); + $media->save(); + + $form_state = new FormState(); + $form_state->setUserInput([ + 'editor_object' => [ + 'attributes' => [ + 'data-entity-type' => 'media', + 'data-entity-uuid' => $media->uuid(), + 'data-align' => 'center', + ], + 'hasCaption' => 'false', + 'label' => $media->label(), + 'link' => '', + 'hostEntityLangcode' => $media->language()->getId(), + 'classes' => '', + ], + ]); + $form_state->setRequestMethod('POST'); + + EditorMediaDialog::create($this->container) + ->buildForm([], $form_state, $editor->reveal()); + $this->pass('Form was built without errors.'); + } + +}