1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
<?php
declare(strict_types=1);
namespace Drupal\Tests\language\Kernel;
use Drupal\Core\Config\ConfigCollectionEvents;
use Drupal\language\Config\LanguageConfigOverrideEvents;
use Drupal\language\Entity\ConfigurableLanguage;
use Drupal\KernelTests\KernelTestBase;
// cspell:ignore deutsch
/**
* Ensures the language config overrides can be installed.
*
* @group language
*/
class LanguageConfigOverrideInstallTest extends KernelTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = ['language', 'config_events_test', 'language_events_test'];
/**
* Tests the configuration events are not fired during install of overrides.
*/
public function testLanguageConfigOverrideInstall(): void {
$this->installConfig(['language']);
ConfigurableLanguage::createFromLangcode('de')->save();
// Need to enable test module after creating the language otherwise saving
// the language will install the configuration.
$this->enableModules(['language_config_override_test']);
\Drupal::state()->set('config_events_test.event', FALSE);
\Drupal::state()->set('language_events_test.all_events', []);
$this->installConfig(['language_config_override_test']);
// Ensure the save-in-collection event is triggered when saving data in
// config collections during an install.
$event_recorder = \Drupal::state()->get('config_events_test.event', FALSE);
$this->assertSame([
'event_name' => ConfigCollectionEvents::SAVE_IN_COLLECTION,
'current_config_data' => ['name' => 'Deutsch'],
'original_config_data' => [],
'raw_config_data' => ['name' => 'Deutsch'],
], $event_recorder);
$config = \Drupal::service('language.config_factory_override')->getOverride('de', 'language_config_override_test.settings');
$this->assertEquals('Deutsch', $config->get('name'));
// Ensure the save override event is triggered when saving overrides during
// an install.
$event_recorder = \Drupal::state()->get('language_events_test.all_events', []);
$this->assertArrayHasKey(LanguageConfigOverrideEvents::SAVE_OVERRIDE, $event_recorder);
$this->assertArrayHasKey('language_config_override_test.settings', $event_recorder[LanguageConfigOverrideEvents::SAVE_OVERRIDE]);
$this->assertSame([
'event_name' => LanguageConfigOverrideEvents::SAVE_OVERRIDE,
'current_override_data' => ['name' => 'Deutsch'],
'original_override_data' => [],
], $event_recorder['language.save_override']['language_config_override_test.settings'][0]);
// Test events during uninstall.
\Drupal::state()->set('config_events_test.all_events', []);
\Drupal::state()->set('language_events_test.all_events', []);
$this->container->get('module_installer')->uninstall(['language_config_override_test']);
// Ensure the delete-in-collection event is triggered when deleting data in
// config collections during an uninstall.
$event_recorder = \Drupal::state()->get('config_events_test.all_events', []);
$this->assertArrayHasKey(ConfigCollectionEvents::DELETE_IN_COLLECTION, $event_recorder);
$this->assertArrayHasKey('language_config_override_test.settings', $event_recorder[ConfigCollectionEvents::DELETE_IN_COLLECTION]);
$this->assertSame([
'event_name' => ConfigCollectionEvents::DELETE_IN_COLLECTION,
'current_config_data' => [],
'original_config_data' => ['name' => 'Deutsch'],
'raw_config_data' => [],
], $event_recorder[ConfigCollectionEvents::DELETE_IN_COLLECTION]['language_config_override_test.settings'][0]);
// Ensure the delete override event is triggered when deleting overrides
// during an uninstall.
$event_recorder = \Drupal::state()->get('language_events_test.all_events', []);
$this->assertArrayHasKey(LanguageConfigOverrideEvents::DELETE_OVERRIDE, $event_recorder);
$this->assertArrayHasKey('language_config_override_test.settings', $event_recorder[LanguageConfigOverrideEvents::DELETE_OVERRIDE]);
$this->assertSame([
'event_name' => LanguageConfigOverrideEvents::DELETE_OVERRIDE,
'current_override_data' => [],
'original_override_data' => ['name' => 'Deutsch'],
], $event_recorder['language.delete_override']['language_config_override_test.settings'][0]);
}
}
|