ContentTranslationConfigImportTest.php
Same filename in other branches
Namespace
Drupal\Tests\content_translation\KernelFile
-
core/
modules/ content_translation/ tests/ src/ Kernel/ ContentTranslationConfigImportTest.php
View source
<?php
declare (strict_types=1);
namespace Drupal\Tests\content_translation\Kernel;
use Drupal\Core\Config\ConfigImporter;
use Drupal\Core\Config\StorageComparer;
use Drupal\KernelTests\KernelTestBase;
/**
* Tests content translation updates performed during config import.
*
* @group content_translation
*/
class ContentTranslationConfigImportTest extends KernelTestBase {
/**
* Config Importer object used for testing.
*
* @var \Drupal\Core\Config\ConfigImporter
*/
protected $configImporter;
/**
* {@inheritdoc}
*/
protected static $modules = [
'system',
'user',
'entity_test',
'language',
'content_translation',
];
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
$this->installConfig([
'system',
]);
$this->installEntitySchema('entity_test_mul');
$this->copyConfig($this->container
->get('config.storage'), $this->container
->get('config.storage.sync'));
// Set up the ConfigImporter object for testing.
$storage_comparer = new StorageComparer($this->container
->get('config.storage.sync'), $this->container
->get('config.storage'));
$this->configImporter = new ConfigImporter($storage_comparer->createChangelist(), $this->container
->get('event_dispatcher'), $this->container
->get('config.manager'), $this->container
->get('lock'), $this->container
->get('config.typed'), $this->container
->get('module_handler'), $this->container
->get('module_installer'), $this->container
->get('theme_handler'), $this->container
->get('string_translation'), $this->container
->get('extension.list.module'), $this->container
->get('extension.list.theme'));
}
/**
* Tests config import updates.
*/
public function testConfigImportUpdates() : void {
$entity_type_id = 'entity_test_mul';
$config_id = $entity_type_id . '.' . $entity_type_id;
$config_name = 'language.content_settings.' . $config_id;
$storage = $this->container
->get('config.storage');
$sync = $this->container
->get('config.storage.sync');
// Verify the configuration to create does not exist yet.
$this->assertFalse($storage->exists($config_name), $config_name . ' not found.');
// Create new config entity.
$data = [
'uuid' => 'a019d89b-c4d9-4ed4-b859-894e4e2e93cf',
'langcode' => 'en',
'status' => TRUE,
'dependencies' => [
'module' => [
'content_translation',
],
],
'id' => $config_id,
'target_entity_type_id' => 'entity_test_mul',
'target_bundle' => 'entity_test_mul',
'default_langcode' => 'site_default',
'language_alterable' => FALSE,
'third_party_settings' => [
'content_translation' => [
'enabled' => TRUE,
],
],
];
$sync->write($config_name, $data);
$this->assertTrue($sync->exists($config_name), $config_name . ' found.');
// Import.
$this->configImporter
->reset()
->import();
// Verify the values appeared.
$config = $this->config($config_name);
$this->assertSame($config_id, $config->get('id'));
// Verify that updates were performed.
$entity_type = $this->container
->get('entity_type.manager')
->getDefinition($entity_type_id);
$table = $entity_type->getDataTable();
$db_schema = $this->container
->get('database')
->schema();
$result = $db_schema->fieldExists($table, 'content_translation_source') && $db_schema->fieldExists($table, 'content_translation_outdated');
$this->assertTrue($result, 'Content translation updates were successfully performed during config import.');
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
ContentTranslationConfigImportTest | Tests content translation updates performed during config import. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.