fe6296cc40e7253c6043217d87f3e97230033fb8
[yaffs-website] / web / core / modules / language / tests / src / Kernel / Migrate / d7 / MigrateLanguageNegotiationSettingsTest.php
1 <?php
2
3 namespace Drupal\Tests\language\Kernel\Migrate\d7;
4
5 use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl;
6 use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
7
8 /**
9  * Tests the migration of language negotiation.
10  *
11  * @group migrate_drupal_7
12  */
13 class MigrateLanguageNegotiationSettingsTest extends MigrateDrupal7TestBase {
14
15   /**
16    * {@inheritdoc}
17    */
18   public static $modules = ['language'];
19
20   /**
21    * Tests migration of language types variables to language.types.yml.
22    */
23   public function testLanguageTypes() {
24     $this->executeMigrations([
25       'language',
26       'd7_language_negotiation_settings',
27       'd7_language_types',
28     ]);
29
30     $config = $this->config('language.types');
31     $this->assertSame(['language_content', 'language_url', 'language_interface'], $config->get('all'));
32     $this->assertSame(['language_interface'], $config->get('configurable'));
33     $this->assertSame(['enabled' => ['language-interface' => 0]], $config->get('negotiation.language_content'));
34     $this->assertSame(['enabled' => ['language-url' => 0, 'language-url-fallback' => 1]], $config->get('negotiation.language_url'));
35     $expected_language_interface = [
36       'enabled' => [
37         'language-url' => -9,
38         'language-user' => -10,
39         'language-selected' => -6,
40       ],
41       'method_weights' => [
42         'language-url' => -9,
43         'language-session' => -8,
44         'language-user' => -10,
45         'language-browser' => -7,
46         'language-selected' => -6,
47       ],
48     ];
49     $this->assertSame($expected_language_interface, $config->get('negotiation.language_interface'));
50   }
51
52   /**
53    * Tests the migration with prefix negotiation.
54    */
55   public function testLanguageNegotiationWithPrefix() {
56     $this->executeMigrations([
57       'language',
58       'd7_language_negotiation_settings',
59       'language_prefixes_and_domains',
60     ]);
61
62     $config = $this->config('language.negotiation');
63     $this->assertSame('language', $config->get('session.parameter'));
64     $this->assertSame(LanguageNegotiationUrl::CONFIG_PATH_PREFIX, $config->get('url.source'));
65     $this->assertSame('site_default', $config->get('selected_langcode'));
66     $expected_prefixes = [
67       'en' => '',
68       'is' => 'is',
69     ];
70     $this->assertSame($expected_prefixes, $config->get('url.prefixes'));
71   }
72
73   /**
74    * Tests the migration with domain negotiation.
75    */
76   public function testLanguageNegotiationWithDomain() {
77     $this->sourceDatabase->update('variable')
78       ->fields(['value' => serialize(1)])
79       ->condition('name', 'locale_language_negotiation_url_part')
80       ->execute();
81
82     $this->executeMigrations([
83       'language',
84       'd7_language_negotiation_settings',
85       'language_prefixes_and_domains',
86     ]);
87
88     global $base_url;
89     $config = $this->config('language.negotiation');
90     $this->assertSame('language', $config->get('session.parameter'));
91     $this->assertSame(LanguageNegotiationUrl::CONFIG_DOMAIN, $config->get('url.source'));
92     $this->assertSame('site_default', $config->get('selected_langcode'));
93     $expected_domains = [
94       'en' => parse_url($base_url, PHP_URL_HOST),
95       'is' => 'is.drupal.org',
96     ];
97     $this->assertSame($expected_domains, $config->get('url.domains'));
98   }
99
100   /**
101    * Tests the migration with non-existent variables.
102    */
103   public function testLanguageNegotiationWithNonExistentVariables() {
104     $this->sourceDatabase->delete('variable')
105       ->condition('name', ['local_language_negotiation_url_part', 'local_language_negotiation_session_param'], 'IN')
106       ->execute();
107
108     $this->executeMigrations([
109       'language',
110       'd6_language_negotiation_settings',
111       'language_prefixes_and_domains',
112     ]);
113
114     $config = $this->config('language.negotiation');
115     $this->assertSame('language', $config->get('session.parameter'));
116     $this->assertSame(LanguageNegotiationUrl::CONFIG_PATH_PREFIX, $config->get('url.source'));
117     $this->assertSame('site_default', $config->get('selected_langcode'));
118     $expected_prefixes = [
119       'en' => '',
120       'is' => 'is',
121     ];
122     $this->assertSame($expected_prefixes, $config->get('url.prefixes'));
123   }
124
125 }