96bc4a0d8cff0f0e90336307a7d208570516d222
[yaffs-website] / web / core / modules / language / tests / src / Kernel / Migrate / d6 / MigrateLanguageNegotiationSettingsTest.php
1 <?php
2
3 namespace Drupal\Tests\language\Kernel\Migrate\d6;
4
5 use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl;
6 use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
7
8 /**
9  * Tests the migration of language negotiation and language types.
10  *
11  * @group migrate_drupal_6
12  */
13 class MigrateLanguageNegotiationSettingsTest extends MigrateDrupal6TestBase {
14
15   /**
16    * {@inheritdoc}
17    */
18   public static $modules = ['language'];
19
20   /**
21    * Tests the migration with LANGUAGE_NEGOTIATION_PATH_DEFAULT.
22    */
23   public function testLanguageNegotiationWithDefaultPathPrefix() {
24     $this->executeMigrations([
25       'language',
26       'd6_language_negotiation_settings',
27       'language_prefixes_and_domains',
28       'd6_language_types',
29     ]);
30
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 = [
36       'en' => '',
37       'fr' => 'fr',
38       'zu' => 'zu',
39     ];
40     $this->assertSame($expected_prefixes, $config->get('url.prefixes'));
41
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 = [
48       'language-url' => 0,
49       'language-selected' => 1,
50     ];
51     $this->assertSame($expected_language_interface, $config->get('negotiation.language_interface.enabled'));
52   }
53
54   /**
55    * Tests the migration with LANGUAGE_NEGOTIATION_NONE.
56    */
57   public function testLanguageNegotiationWithNoNegotiation() {
58     $this->sourceDatabase->update('variable')
59       ->fields(['value' => serialize(0)])
60       ->condition('name', 'language_negotiation')
61       ->execute();
62
63     $this->executeMigrations([
64       'language',
65       'd6_language_negotiation_settings',
66       'language_prefixes_and_domains',
67       'd6_language_types',
68     ]);
69
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'));
74
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,
82     ];
83     $this->assertSame($expected_language_interface, $config->get('negotiation.language_interface.enabled'));
84   }
85
86   /**
87    * Tests the migration with LANGUAGE_NEGOTIATION_PATH.
88    */
89   public function testLanguageNegotiationWithPathPrefix() {
90     $this->sourceDatabase->update('variable')
91       ->fields(['value' => serialize(2)])
92       ->condition('name', 'language_negotiation')
93       ->execute();
94
95     $this->executeMigrations([
96       'language',
97       'd6_language_negotiation_settings',
98       'language_prefixes_and_domains',
99       'd6_language_types',
100     ]);
101
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 = [
107       'en' => '',
108       'fr' => 'fr',
109       'zu' => 'zu',
110     ];
111     $this->assertSame($expected_prefixes, $config->get('url.prefixes'));
112
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 = [
119       'language-url' => 0,
120       'language-user' => 1,
121       'language-browser' => 2,
122       'language-selected' => 3,
123     ];
124     $this->assertSame($expected_language_interface, $config->get('negotiation.language_interface.enabled'));
125   }
126
127   /**
128    * Tests the migration with LANGUAGE_NEGOTIATION_DOMAIN.
129    */
130   public function testLanguageNegotiationWithDomain() {
131     $this->sourceDatabase->update('variable')
132       ->fields(['value' => serialize(3)])
133       ->condition('name', 'language_negotiation')
134       ->execute();
135
136     $this->executeMigrations([
137       'language',
138       'd6_language_negotiation_settings',
139       'language_prefixes_and_domains',
140       'd6_language_types',
141     ]);
142
143     global $base_url;
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',
152     ];
153     $this->assertSame($expected_domains, $config->get('url.domains'));
154
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 = [
161       'language-url' => 0,
162       'language-selected' => 1,
163     ];
164     $this->assertSame($expected_language_interface, $config->get('negotiation.language_interface.enabled'));
165   }
166
167 }