3 namespace Drupal\Tests\language\Kernel\Migrate\d7;
5 use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl;
6 use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
9 * Tests the migration of language negotiation.
11 * @group migrate_drupal_7
13 class MigrateLanguageNegotiationSettingsTest extends MigrateDrupal7TestBase {
18 public static $modules = ['language'];
21 * Tests migration of language types variables to language.types.yml.
23 public function testLanguageTypes() {
24 $this->executeMigrations([
26 'd7_language_negotiation_settings',
30 $config = $this->config('language.types');
31 $this->assertSame($config->get('all'), ['language_content', 'language_url', 'language_interface']);
32 $this->assertSame($config->get('configurable'), ['language_interface']);
33 $this->assertSame($config->get('negotiation.language_content'), ['enabled' => ['language-interface' => 0]]);
34 $this->assertSame($config->get('negotiation.language_url'), ['enabled' => ['language-url' => 0, 'language-url-fallback' => 1]]);
35 $expected_language_interface = [
38 'language-user' => -10,
39 'language-selected' => -6,
43 'language-session' => -8,
44 'language-user' => -10,
45 'language-browser' => -7,
46 'language-selected' => -6,
49 $this->assertSame($config->get('negotiation.language_interface'), $expected_language_interface);
53 * Tests the migration with prefix negotiation.
55 public function testLanguageNegotiationWithPrefix() {
56 $this->executeMigrations([
58 'd7_language_negotiation_settings',
59 'language_prefixes_and_domains',
62 $config = $this->config('language.negotiation');
63 $this->assertSame($config->get('session.parameter'), 'language');
64 $this->assertSame($config->get('url.source'), LanguageNegotiationUrl::CONFIG_PATH_PREFIX);
65 $this->assertSame($config->get('selected_langcode'), 'site_default');
66 $expected_prefixes = [
70 $this->assertSame($config->get('url.prefixes'), $expected_prefixes);
74 * Tests the migration with domain negotiation.
76 public function testLanguageNegotiationWithDomain() {
77 $this->sourceDatabase->update('variable')
78 ->fields(['value' => serialize(1)])
79 ->condition('name', 'locale_language_negotiation_url_part')
82 $this->executeMigrations([
84 'd7_language_negotiation_settings',
85 'language_prefixes_and_domains',
89 $config = $this->config('language.negotiation');
90 $this->assertSame($config->get('session.parameter'), 'language');
91 $this->assertSame($config->get('url.source'), LanguageNegotiationUrl::CONFIG_DOMAIN);
92 $this->assertSame($config->get('selected_langcode'), 'site_default');
94 'en' => parse_url($base_url, PHP_URL_HOST),
95 'is' => 'is.drupal.org',
97 $this->assertSame($config->get('url.domains'), $expected_domains);
101 * Tests the migration with non-existent variables.
103 public function testLanguageNegotiationWithNonExistentVariables() {
104 $this->sourceDatabase->delete('variable')
105 ->condition('name', ['local_language_negotiation_url_part', 'local_language_negotiation_session_param'], 'IN')
108 $this->executeMigrations([
110 'd6_language_negotiation_settings',
111 'language_prefixes_and_domains',
114 $config = $this->config('language.negotiation');
115 $this->assertSame($config->get('session.parameter'), 'language');
116 $this->assertSame($config->get('url.source'), LanguageNegotiationUrl::CONFIG_PATH_PREFIX);
117 $this->assertSame($config->get('selected_langcode'), 'site_default');
118 $expected_prefixes = [
122 $this->assertSame($config->get('url.prefixes'), $expected_prefixes);