public function MediaSourceTest::testSourceFieldCreation in Drupal 9
Same name and namespace in other branches
- 8 core/modules/media/tests/src/Kernel/MediaSourceTest.php \Drupal\Tests\media\Kernel\MediaSourceTest::testSourceFieldCreation()
- 10 core/modules/media/tests/src/Kernel/MediaSourceTest.php \Drupal\Tests\media\Kernel\MediaSourceTest::testSourceFieldCreation()
Tests logic related to the automated source field creation.
File
- core/
modules/ media/ tests/ src/ Kernel/ MediaSourceTest.php, line 428
Class
- MediaSourceTest
- Tests media source plugins related logic.
Namespace
Drupal\Tests\media\KernelCode
public function testSourceFieldCreation() {
/** @var \Drupal\media\MediaTypeInterface $type */
$type = MediaType::create([
'id' => 'test_type',
'label' => 'Test type',
'source' => 'test',
]);
/** @var \Drupal\field\Entity\FieldConfig $field */
$field = $type
->getSource()
->createSourceField($type);
/** @var \Drupal\field\Entity\FieldStorageConfig $field_storage */
$field_storage = $field
->getFieldStorageDefinition();
// Test field storage.
$this
->assertTrue($field_storage
->isNew(), 'Field storage is saved automatically.');
$this
->assertFalse($field_storage
->isLocked(), 'Field storage is not locked.');
$this
->assertSame('string', $field_storage
->getType(), 'Field is not of correct type.');
$this
->assertSame('field_media_test_1', $field_storage
->getName(), 'Incorrect field name is used.');
$this
->assertSame('media', $field_storage
->getTargetEntityTypeId(), 'Field is not targeting media entities.');
// Test field.
$this
->assertTrue($field
->isNew(), 'Field is saved automatically.');
$this
->assertSame('field_media_test_1', $field
->getName(), 'Incorrect field name is used.');
$this
->assertSame('string', $field
->getType(), 'Field is of incorrect type.');
$this
->assertTrue($field
->isRequired(), 'Field is not required.');
$this
->assertEquals('Test source', $field
->label(), 'Incorrect label is used.');
$this
->assertSame('test_type', $field
->getTargetBundle(), 'Field is not targeting correct bundle.');
// Fields should be automatically saved only when creating the media type
// using the media type creation form. Make sure that they are not saved
// when creating a media type programmatically.
// Drupal\Tests\media\FunctionalJavascript\MediaTypeCreationTest is testing
// form part of the functionality.
$type
->save();
$storage = FieldStorageConfig::load('media.field_media_test_1');
$this
->assertNull($storage, 'Field storage was not saved.');
$field = FieldConfig::load('media.test_type.field_media_test_1');
$this
->assertNull($field, 'Field storage was not saved.');
// Test the plugin with a different default source field type.
$type = MediaType::create([
'id' => 'test_constraints_type',
'label' => 'Test type with constraints',
'source' => 'test_constraints',
]);
$field = $type
->getSource()
->createSourceField($type);
$field_storage = $field
->getFieldStorageDefinition();
// Test field storage.
$this
->assertTrue($field_storage
->isNew(), 'Field storage is saved automatically.');
$this
->assertFalse($field_storage
->isLocked(), 'Field storage is not locked.');
$this
->assertSame('string_long', $field_storage
->getType(), 'Field is of incorrect type.');
$this
->assertSame('field_media_test_constraints_1', $field_storage
->getName(), 'Incorrect field name is used.');
$this
->assertSame('media', $field_storage
->getTargetEntityTypeId(), 'Field is not targeting media entities.');
// Test field.
$this
->assertTrue($field
->isNew(), 'Field is saved automatically.');
$this
->assertSame('field_media_test_constraints_1', $field
->getName(), 'Incorrect field name is used.');
$this
->assertSame('string_long', $field
->getType(), 'Field is of incorrect type.');
$this
->assertTrue($field
->isRequired(), 'Field is not required.');
$this
->assertEquals('Test source with constraints', $field
->label(), 'Incorrect label is used.');
$this
->assertSame('test_constraints_type', $field
->getTargetBundle(), 'Field is not targeting correct bundle.');
}