1<?php
2
3namespace Drupal\Tests\language\Kernel\Migrate\d6;
4
5use Drupal\language\Entity\ContentLanguageSettings;
6use Drupal\Core\Language\LanguageInterface;
7use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
8
9/**
10 * Tests migration of i18ntaxonomy vocabulary settings.
11 *
12 * @group migrate_drupal_6
13 */
14class MigrateLanguageContentTaxonomyVocabularySettingsTest extends MigrateDrupal6TestBase {
15
16  /**
17   * {@inheritdoc}
18   */
19  protected static $modules = [
20    'language',
21    'content_translation',
22    'taxonomy',
23  ];
24
25  /**
26   * {@inheritdoc}
27   */
28  protected function setUp(): void {
29    parent::setUp();
30    $this->installEntitySchema('taxonomy_term');
31    $this->executeMigrations([
32      'language',
33      'd6_taxonomy_vocabulary',
34      'd6_language_content_taxonomy_vocabulary_settings',
35    ]);
36  }
37
38  /**
39   * Tests migration of 18ntaxonomy vocabulary settings.
40   */
41  public function testLanguageContentTaxonomy() {
42    $target_entity = 'taxonomy_term';
43    // Per Language.
44    $this->assertLanguageContentSettings($target_entity, 'vocabulary_1_i_0_', LanguageInterface::LANGCODE_SITE_DEFAULT, TRUE, ['enabled' => FALSE]);
45    // Set language to vocabulary.
46    $this->assertLanguageContentSettings($target_entity, 'vocabulary_2_i_1_', 'fr', FALSE, ['enabled' => FALSE]);
47    // Localize terms.
48    $this->assertLanguageContentSettings($target_entity, 'vocabulary_3_i_2_', LanguageInterface::LANGCODE_SITE_DEFAULT, TRUE, ['enabled' => FALSE]);
49    // None translation enabled.
50    $this->assertLanguageContentSettings($target_entity, 'vocabulary_name_much_longer_th', LanguageInterface::LANGCODE_SITE_DEFAULT, TRUE, ['enabled' => TRUE]);
51    $this->assertLanguageContentSettings($target_entity, 'tags', LanguageInterface::LANGCODE_SITE_DEFAULT, FALSE, ['enabled' => FALSE]);
52    $this->assertLanguageContentSettings($target_entity, 'forums', LanguageInterface::LANGCODE_SITE_DEFAULT, FALSE, ['enabled' => FALSE]);
53    $this->assertLanguageContentSettings($target_entity, 'type', LanguageInterface::LANGCODE_SITE_DEFAULT, FALSE, ['enabled' => FALSE]);
54  }
55
56  /**
57   * Asserts a content language settings configuration.
58   *
59   * @param string $target_entity
60   *   The expected target entity type.
61   * @param string $bundle
62   *   The expected bundle.
63   * @param string $default_langcode
64   *   The default language code.
65   * @param bool $language_alterable
66   *   The expected state of language alterable.
67   * @param array $third_party_settings
68   *   The content translation setting.
69   */
70  public function assertLanguageContentSettings($target_entity, $bundle, $default_langcode, $language_alterable, array $third_party_settings) {
71    $config = ContentLanguageSettings::load($target_entity . "." . $bundle);
72    $this->assertInstanceOf(ContentLanguageSettings::class, $config);
73    $this->assertSame($target_entity, $config->getTargetEntityTypeId());
74    $this->assertSame($bundle, $config->getTargetBundle());
75    $this->assertSame($default_langcode, $config->getDefaultLangcode());
76    $this->assertSame($language_alterable, $config->isLanguageAlterable());
77    $this->assertSame($third_party_settings, $config->getThirdPartySettings('content_translation'));
78  }
79
80}
81