View source
<?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;
class MediaIefIntegrationTest extends MediaEntityJavascriptTestBase {
public static $modules = [
'inline_entity_form',
];
protected function setUp() {
parent::setUp();
$media_bundle = $this
->drupalCreateMediaBundle();
$values = [
'name' => 'Media entity CT',
'title_label' => 'An example Custom Content type.',
'type' => 'media_entity_ct',
];
$content_type = $this
->createContentType($values);
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();
$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();
}
public function testMediaIefIntegration() {
$session = $this
->getSession();
$page = $session
->getPage();
$assert_session = $this
->assertSession();
$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();
$page
->findField('ref_media_entities[form][inline_entity_form][name][0][value]')
->isVisible();
$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();
$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);
$media = Media::load($media_id);
$this
->assertEquals($media_name, $media
->label(), 'A media inside IEF was correctly created.');
}
}