You are here

trait MediaTypeCreationTrait in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/media/tests/src/Traits/MediaTypeCreationTrait.php \Drupal\Tests\media\Traits\MediaTypeCreationTrait
  2. 10 core/modules/media/tests/src/Traits/MediaTypeCreationTrait.php \Drupal\Tests\media\Traits\MediaTypeCreationTrait

Provides methods to create a media type from given values.

This trait is meant to be used only by test classes.

Hierarchy

20 files declare their use of MediaTypeCreationTrait
CKEditorIntegrationTest.php in core/modules/media_library/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php
CKEditorIntegrationTest.php in core/modules/media/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php
ContentEntityTest.php in core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/ContentEntityTest.php
ContentModerationTest.php in core/modules/media_library/tests/src/FunctionalJavascript/ContentModerationTest.php
EditorMediaDialogTest.php in core/modules/media/tests/src/Kernel/EditorMediaDialogTest.php

... See full list

File

core/modules/media/tests/src/Traits/MediaTypeCreationTrait.php, line 12

Namespace

Drupal\Tests\media\Traits
View source
trait MediaTypeCreationTrait {

  /**
   * Create a media type for a source plugin.
   *
   * @param string $source_plugin_id
   *   The media source plugin ID.
   * @param mixed[] $values
   *   (optional) Additional values for the media type entity:
   *   - id: The ID of the media type. If none is provided, a random value will
   *     be used.
   *   - label: The human-readable label of the media type. If none is provided,
   *     a random value will be used.
   *   See \Drupal\media\MediaTypeInterface and \Drupal\media\Entity\MediaType
   *   for full documentation of the media type properties.
   *
   * @return \Drupal\media\MediaTypeInterface
   *   A media type.
   *
   * @see \Drupal\media\MediaTypeInterface
   * @see \Drupal\media\Entity\MediaType
   */
  protected function createMediaType($source_plugin_id, array $values = []) {
    $values += [
      'id' => $this
        ->randomMachineName(),
      'label' => $this
        ->randomString(),
      'source' => $source_plugin_id,
    ];

    /** @var \Drupal\media\MediaTypeInterface $media_type */
    $media_type = MediaType::create($values);
    $source = $media_type
      ->getSource();
    $source_field = $source
      ->createSourceField($media_type);
    $source_configuration = $source
      ->getConfiguration();
    $source_configuration['source_field'] = $source_field
      ->getName();
    $source
      ->setConfiguration($source_configuration);
    $this
      ->assertSame(SAVED_NEW, $media_type
      ->save());

    // The media type form creates a source field if it does not exist yet. The
    // same must be done in a kernel test, since it does not use that form.
    // @see \Drupal\media\MediaTypeForm::save()
    $source_field
      ->getFieldStorageDefinition()
      ->save();

    // The source field storage has been created, now the field can be saved.
    $source_field
      ->save();

    // Add the source field to the form display for the media type.
    $form_display = \Drupal::service('entity_display.repository')
      ->getFormDisplay('media', $media_type
      ->id(), 'default');
    $source
      ->prepareFormDisplay($media_type, $form_display);
    $form_display
      ->save();
    return $media_type;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
MediaTypeCreationTrait::createMediaType protected function Create a media type for a source plugin.