function FieldImportCreateTest::testImportCreate

Same name and namespace in other branches
  1. 9 core/modules/field/tests/src/Kernel/FieldImportCreateTest.php \Drupal\Tests\field\Kernel\FieldImportCreateTest::testImportCreate()
  2. 8.9.x core/modules/field/tests/src/Kernel/FieldImportCreateTest.php \Drupal\Tests\field\Kernel\FieldImportCreateTest::testImportCreate()
  3. 10 core/modules/field/tests/src/Kernel/FieldImportCreateTest.php \Drupal\Tests\field\Kernel\FieldImportCreateTest::testImportCreate()

Tests creating field storages and fields during config import.

File

core/modules/field/tests/src/Kernel/FieldImportCreateTest.php, line 77

Class

FieldImportCreateTest
Create field storages and fields during config create method invocation.

Namespace

Drupal\Tests\field\Kernel

Code

public function testImportCreate() : void {
    // A field storage with one single field.
    $field_name = 'field_test_import_sync';
    $field_storage_id = "entity_test.{$field_name}";
    $field_id = "entity_test.entity_test.{$field_name}";
    $field_storage_config_name = "field.storage.{$field_storage_id}";
    $field_config_name = "field.field.{$field_id}";
    // A field storage with two fields.
    $field_name_2 = 'field_test_import_sync_2';
    $field_storage_id_2 = "entity_test.{$field_name_2}";
    $field_id_2a = "entity_test.test_bundle.{$field_name_2}";
    $field_id_2b = "entity_test.test_bundle_2.{$field_name_2}";
    $field_storage_config_name_2 = "field.storage.{$field_storage_id_2}";
    $field_config_name_2a = "field.field.{$field_id_2a}";
    $field_config_name_2b = "field.field.{$field_id_2b}";
    $active = $this->container
        ->get('config.storage');
    $sync = $this->container
        ->get('config.storage.sync');
    $this->copyConfig($active, $sync);
    // Add the new files to the sync directory.
    $src_dir = __DIR__ . '/../../modules/field_test_config/sync';
    $target_dir = Settings::get('config_sync_directory');
    
    /** @var \Drupal\Core\File\FileSystemInterface $file_system */
    $file_system = \Drupal::service('file_system');
    $this->assertNotFalse($file_system->copy("{$src_dir}/{$field_storage_config_name}.yml", "{$target_dir}/{$field_storage_config_name}.yml"));
    $this->assertNotFalse($file_system->copy("{$src_dir}/{$field_config_name}.yml", "{$target_dir}/{$field_config_name}.yml"));
    $this->assertNotFalse($file_system->copy("{$src_dir}/{$field_storage_config_name_2}.yml", "{$target_dir}/{$field_storage_config_name_2}.yml"));
    $this->assertNotFalse($file_system->copy("{$src_dir}/{$field_config_name_2a}.yml", "{$target_dir}/{$field_config_name_2a}.yml"));
    $this->assertNotFalse($file_system->copy("{$src_dir}/{$field_config_name_2b}.yml", "{$target_dir}/{$field_config_name_2b}.yml"));
    // Import the content of the sync directory.
    $this->configImporter()
        ->import();
    // Check that the field and storage were created.
    $field_storage = FieldStorageConfig::load($field_storage_id);
    $this->assertNotEmpty($field_storage, 'Test import storage field from sync exists');
    $field = FieldConfig::load($field_id);
    $this->assertNotEmpty($field, 'Test import field  from sync exists');
    $field_storage = FieldStorageConfig::load($field_storage_id_2);
    $this->assertNotEmpty($field_storage, 'Test import storage field 2 from sync exists');
    $field = FieldConfig::load($field_id_2a);
    $this->assertNotEmpty($field, 'Test import field 2a from sync exists');
    $field = FieldConfig::load($field_id_2b);
    $this->assertNotEmpty($field, 'Test import field 2b from sync exists');
}

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