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('language', $config->get('session.parameter'));
33 $this->assertSame(LanguageNegotiationUrl::CONFIG_PATH_PREFIX, $config->get('url.source'));
34 $this->assertSame('site_default', $config->get('selected_langcode'));
35 $expected_prefixes = [
40 $this->assertSame($expected_prefixes, $config->get('url.prefixes'));
42 $config = $this->config('language.types');
43 $this->assertSame(['language_interface', 'language_content', 'language_url'], $config->get('all'));
44 $this->assertSame(['language_interface'], $config->get('configurable'));
45 $this->assertSame(['language-interface' => 0], $config->get('negotiation.language_content.enabled'));
46 $this->assertSame(['language-url' => 0, 'language-url-fallback' => 1], $config->get('negotiation.language_url.enabled'));
47 $expected_language_interface = [
49 'language-selected' => 1,
51 $this->assertSame($expected_language_interface, $config->get('negotiation.language_interface.enabled'));
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('language', $config->get('session.parameter'));
72 $this->assertSame(LanguageNegotiationUrl::CONFIG_PATH_PREFIX, $config->get('url.source'));
73 $this->assertSame('site_default', $config->get('selected_langcode'));
75 $config = $this->config('language.types');
76 $this->assertSame(['language_interface', 'language_content', 'language_url'], $config->get('all'));
77 $this->assertSame(['language_interface'], $config->get('configurable'));
78 $this->assertSame(['language-interface' => 0], $config->get('negotiation.language_content.enabled'));
79 $this->assertSame(['language-url' => 0, 'language-url-fallback' => 1], $config->get('negotiation.language_url.enabled'));
80 $expected_language_interface = [
81 'language-selected' => 0,
83 $this->assertSame($expected_language_interface, $config->get('negotiation.language_interface.enabled'));
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('language', $config->get('session.parameter'));
104 $this->assertSame(LanguageNegotiationUrl::CONFIG_PATH_PREFIX, $config->get('url.source'));
105 $this->assertSame('site_default', $config->get('selected_langcode'));
106 $expected_prefixes = [
111 $this->assertSame($expected_prefixes, $config->get('url.prefixes'));
113 $config = $this->config('language.types');
114 $this->assertSame(['language_interface', 'language_content', 'language_url'], $config->get('all'));
115 $this->assertSame(['language_interface'], $config->get('configurable'));
116 $this->assertSame(['language-interface' => 0], $config->get('negotiation.language_content.enabled'));
117 $this->assertSame(['language-url' => 0, 'language-url-fallback' => 1], $config->get('negotiation.language_url.enabled'));
118 $expected_language_interface = [
120 'language-user' => 1,
121 'language-browser' => 2,
122 'language-selected' => 3,
124 $this->assertSame($expected_language_interface, $config->get('negotiation.language_interface.enabled'));
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('language', $config->get('session.parameter'));
146 $this->assertSame(LanguageNegotiationUrl::CONFIG_DOMAIN, $config->get('url.source'));
147 $this->assertSame('site_default', $config->get('selected_langcode'));
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($expected_domains, $config->get('url.domains'));
155 $config = $this->config('language.types');
156 $this->assertSame(['language_interface', 'language_content', 'language_url'], $config->get('all'));
157 $this->assertSame(['language_interface'], $config->get('configurable'));
158 $this->assertSame(['language-interface' => 0], $config->get('negotiation.language_content.enabled'));
159 $this->assertSame(['language-url' => 0, 'language-url-fallback' => 1], $config->get('negotiation.language_url.enabled'));
160 $expected_language_interface = [
162 'language-selected' => 1,
164 $this->assertSame($expected_language_interface, $config->get('negotiation.language_interface.enabled'));