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(['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 = [
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($expected_language_interface, $config->get('negotiation.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('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 = [
70 $this->assertSame($expected_prefixes, $config->get('url.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('language', $config->get('session.parameter'));
91 $this->assertSame(LanguageNegotiationUrl::CONFIG_DOMAIN, $config->get('url.source'));
92 $this->assertSame('site_default', $config->get('selected_langcode'));
94 'en' => parse_url($base_url, PHP_URL_HOST),
95 'is' => 'is.drupal.org',
97 $this->assertSame($expected_domains, $config->get('url.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('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 = [
122 $this->assertSame($expected_prefixes, $config->get('url.prefixes'));