3 namespace Drupal\Tests\language\Kernel\Migrate\d6;
5 use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl;
6 use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
9 * Tests the migration of language negotiation and language types.
11 * @group migrate_drupal_6
13 class MigrateLanguageNegotiationSettingsTest extends MigrateDrupal6TestBase {
18 public static $modules = ['language'];
21 * Tests the migration with LANGUAGE_NEGOTIATION_PATH_DEFAULT.
23 public function testLanguageNegotiationWithDefaultPathPrefix() {
24 $this->executeMigrations([
26 'd6_language_negotiation_settings',
27 'language_prefixes_and_domains',
31 $config = $this->config('language.negotiation');
32 $this->assertSame($config->get('session.parameter'), 'language');
33 $this->assertSame($config->get('url.source'), LanguageNegotiationUrl::CONFIG_PATH_PREFIX);
34 $this->assertSame($config->get('selected_langcode'), 'site_default');
35 $expected_prefixes = [
40 $this->assertSame($config->get('url.prefixes'), $expected_prefixes);
42 $config = $this->config('language.types');
43 $this->assertSame($config->get('all'), ['language_interface', 'language_content', 'language_url']);
44 $this->assertSame($config->get('configurable'), ['language_interface']);
45 $this->assertSame($config->get('negotiation.language_content.enabled'), ['language-interface' => 0]);
46 $this->assertSame($config->get('negotiation.language_url.enabled'), ['language-url' => 0, 'language-url-fallback' => 1]);
47 $expected_language_interface = [
49 'language-selected' => 1,
51 $this->assertSame($config->get('negotiation.language_interface.enabled'), $expected_language_interface);
55 * Tests the migration with LANGUAGE_NEGOTIATION_NONE.
57 public function testLanguageNegotiationWithNoNegotiation() {
58 $this->sourceDatabase->update('variable')
59 ->fields(['value' => serialize(0)])
60 ->condition('name', 'language_negotiation')
63 $this->executeMigrations([
65 'd6_language_negotiation_settings',
66 'language_prefixes_and_domains',
70 $config = $this->config('language.negotiation');
71 $this->assertSame($config->get('session.parameter'), 'language');
72 $this->assertSame($config->get('url.source'), LanguageNegotiationUrl::CONFIG_PATH_PREFIX);
73 $this->assertSame($config->get('selected_langcode'), 'site_default');
75 $config = $this->config('language.types');
76 $this->assertSame($config->get('all'), ['language_interface', 'language_content', 'language_url']);
77 $this->assertSame($config->get('configurable'), ['language_interface']);
78 $this->assertSame($config->get('negotiation.language_content.enabled'), ['language-interface' => 0]);
79 $this->assertSame($config->get('negotiation.language_url.enabled'), ['language-url' => 0, 'language-url-fallback' => 1]);
80 $expected_language_interface = [
81 'language-selected' => 0,
83 $this->assertSame($config->get('negotiation.language_interface.enabled'), $expected_language_interface);
87 * Tests the migration with LANGUAGE_NEGOTIATION_PATH.
89 public function testLanguageNegotiationWithPathPrefix() {
90 $this->sourceDatabase->update('variable')
91 ->fields(['value' => serialize(2)])
92 ->condition('name', 'language_negotiation')
95 $this->executeMigrations([
97 'd6_language_negotiation_settings',
98 'language_prefixes_and_domains',
102 $config = $this->config('language.negotiation');
103 $this->assertSame($config->get('session.parameter'), 'language');
104 $this->assertSame($config->get('url.source'), LanguageNegotiationUrl::CONFIG_PATH_PREFIX);
105 $this->assertSame($config->get('selected_langcode'), 'site_default');
106 $expected_prefixes = [
111 $this->assertSame($config->get('url.prefixes'), $expected_prefixes);
113 $config = $this->config('language.types');
114 $this->assertSame($config->get('all'), ['language_interface', 'language_content', 'language_url']);
115 $this->assertSame($config->get('configurable'), ['language_interface']);
116 $this->assertSame($config->get('negotiation.language_content.enabled'), ['language-interface' => 0]);
117 $this->assertSame($config->get('negotiation.language_url.enabled'), ['language-url' => 0, 'language-url-fallback' => 1]);
118 $expected_language_interface = [
120 'language-user' => 1,
121 'language-browser' => 2,
122 'language-selected' => 3,
124 $this->assertSame($config->get('negotiation.language_interface.enabled'), $expected_language_interface);
128 * Tests the migration with LANGUAGE_NEGOTIATION_DOMAIN.
130 public function testLanguageNegotiationWithDomain() {
131 $this->sourceDatabase->update('variable')
132 ->fields(['value' => serialize(3)])
133 ->condition('name', 'language_negotiation')
136 $this->executeMigrations([
138 'd6_language_negotiation_settings',
139 'language_prefixes_and_domains',
144 $config = $this->config('language.negotiation');
145 $this->assertSame($config->get('session.parameter'), 'language');
146 $this->assertSame($config->get('url.source'), LanguageNegotiationUrl::CONFIG_DOMAIN);
147 $this->assertSame($config->get('selected_langcode'), 'site_default');
148 $expected_domains = [
149 'en' => parse_url($base_url, PHP_URL_HOST),
150 'fr' => 'fr.drupal.org',
151 'zu' => 'zu.drupal.org',
153 $this->assertSame($config->get('url.domains'), $expected_domains);
155 $config = $this->config('language.types');
156 $this->assertSame($config->get('all'), ['language_interface', 'language_content', 'language_url']);
157 $this->assertSame($config->get('configurable'), ['language_interface']);
158 $this->assertSame($config->get('negotiation.language_content.enabled'), ['language-interface' => 0]);
159 $this->assertSame($config->get('negotiation.language_url.enabled'), ['language-url' => 0, 'language-url-fallback' => 1]);
160 $expected_language_interface = [
162 'language-selected' => 1,
164 $this->assertSame($config->get('negotiation.language_interface.enabled'), $expected_language_interface);