diff --git a/core/modules/media/tests/src/FunctionalJavascript/MediaDisplayTest.php b/core/modules/media/tests/src/FunctionalJavascript/MediaDisplayTest.php index a805934..b7e911d 100644 --- a/core/modules/media/tests/src/FunctionalJavascript/MediaDisplayTest.php +++ b/core/modules/media/tests/src/FunctionalJavascript/MediaDisplayTest.php @@ -2,7 +2,11 @@ namespace Drupal\Tests\media\FunctionalJavascript; +use Drupal\Core\Entity\Entity\EntityViewDisplay; +use Drupal\field\Entity\FieldConfig; +use Drupal\field\Entity\FieldStorageConfig; use Drupal\media\Entity\Media; +use Drupal\node\Entity\Node; /** * Basic display tests for Media. @@ -57,6 +61,10 @@ public function testMediaDisplay() { $this->assertNotEmpty($result); $page->fillField('field_media_image[0][alt]', 'Image Alt Text 1'); $page->pressButton('Save'); + $image_media_id = $this->container->get('entity.query')->get('media') + ->sort('mid', 'DESC') + ->execute(); + $image_media_id = reset($image_media_id); // Here we expect to see only the image, nothing else. // 1) Assert only one element in the content region. @@ -82,6 +90,59 @@ public function testMediaDisplay() { $link = $page->find('css', 'article.media--type-file .field--name-field-media-file a'); $this->assertEquals($test_filename, $link->getText()); + // Reference the created media using an entity_refernce field and make sure + // the output is what we expect. + $storage = FieldStorageConfig::create([ + 'entity_type' => 'node', + 'field_name' => 'field_related_media', + 'type' => 'entity_reference', + 'settings' => [ + 'target_type' => 'media', + ], + ]); + $storage->save(); + + FieldConfig::create([ + 'field_storage' => $storage, + 'entity_type' => 'node', + 'bundle' => 'page', + 'label' => 'Related media', + 'settings' => [ + 'handler_settings' => [ + 'target_bundles' => [ + 'image' => 'image', + ], + ], + ], + ])->save(); + + EntityViewDisplay::load('node.page.default') + ->setComponent('field_related_media', [ + 'type' => 'entity_reference_entity_view', + 'label' => 'hidden', + 'settings' => [ + 'view_mode' => 'full', + ], + ])->save(); + + $node = Node::create([ + 'title' => 'Host node', + 'type' => 'page', + 'field_related_media' => [ + 'target_id' => $image_media_id, + ], + ]); + $node->save(); + + $this->drupalGet('/node/' . $node->id()); + // Media field is there. + $assert_session->elementExists('css', '.field--name-field-related-media'); + // Media name element is not there. + $assert_session->elementNotExists('css', '.field--name-name'); + // Only one element is present inside the media container. + $this->assertEquals(1, count($page->findAll('css', '.field--name-field-related-media article.media--type-image > div'))); + // Assert the image is present, with "medium" image style. + $assert_session->elementExists('css', '.field--name-field-related-media article.media--type-image img.image-style-medium'); } }