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