trait MediaTypeCreationTrait

Same name in other branches
  1. 9 core/modules/media/tests/src/Traits/MediaTypeCreationTrait.php \Drupal\Tests\media\Traits\MediaTypeCreationTrait
  2. 8.9.x core/modules/media/tests/src/Traits/MediaTypeCreationTrait.php \Drupal\Tests\media\Traits\MediaTypeCreationTrait
  3. 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

25 files declare their use of MediaTypeCreationTrait
ContentEntityTest.php in core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/ContentEntityTest.php
ContentImportTest.php in core/tests/Drupal/FunctionalTests/DefaultContent/ContentImportTest.php
ContentModerationTest.php in core/modules/media_library/tests/src/FunctionalJavascript/ContentModerationTest.php
EntityQueryAccessTest.php in core/modules/views/tests/src/Functional/Entity/EntityQueryAccessTest.php
EntityReferenceSelectionAccessTest.php in core/modules/system/tests/src/Kernel/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php

... See full list

File

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

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

Title Sort descending Modifiers Object type Summary
MediaTypeCreationTrait::createMediaType protected function Create a media type for a source plugin.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.