Chris@0: entityTypeId = $this->randomMachineName(); Chris@0: $this->entityType = $this->getMock('\Drupal\Core\Entity\EntityTypeInterface'); Chris@0: Chris@14: $this->entityManager = new EntityManager(); Chris@14: $this->entityTypeManager = $this->getMock(EntityTypeManagerInterface::class); Chris@0: Chris@0: $this->uuid = $this->getMock('\Drupal\Component\Uuid\UuidInterface'); Chris@0: Chris@0: $this->typedConfigManager = $this->getMock('Drupal\Core\Config\TypedConfigManagerInterface'); Chris@0: Chris@0: $this->configEntityStorageInterface = $this->getMock('Drupal\Core\Entity\EntityStorageInterface'); Chris@0: Chris@0: $container = new ContainerBuilder(); Chris@0: $container->set('entity.manager', $this->entityManager); Chris@14: $container->set('entity_type.manager', $this->entityTypeManager); Chris@0: $container->set('uuid', $this->uuid); Chris@0: $container->set('config.typed', $this->typedConfigManager); Chris@0: $container->set('config.storage', $this->configEntityStorageInterface); Chris@14: // Inject the container into entity.manager so it can defer to other entity Chris@14: // services. Chris@14: $this->entityManager->setContainer($container); Chris@0: \Drupal::setContainer($container); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::calculateDependencies Chris@0: */ Chris@0: public function testCalculateDependencies() { Chris@0: // Mock the interfaces necessary to create a dependency on a bundle entity. Chris@0: $target_entity_type = $this->getMock('\Drupal\Core\Entity\EntityTypeInterface'); Chris@0: $target_entity_type->expects($this->any()) Chris@0: ->method('getBundleConfigDependency') Chris@0: ->will($this->returnValue(['type' => 'config', 'name' => 'test.test_entity_type.id'])); Chris@0: Chris@14: $this->entityTypeManager->expects($this->any()) Chris@0: ->method('getDefinition') Chris@0: ->with('test_entity_type') Chris@0: ->will($this->returnValue($target_entity_type)); Chris@0: Chris@0: $config = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_bundle', Chris@0: ], 'language_content_settings'); Chris@0: $dependencies = $config->calculateDependencies()->getDependencies(); Chris@0: $this->assertContains('test.test_entity_type.id', $dependencies['config']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::id Chris@0: */ Chris@0: public function testId() { Chris@0: $config = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_bundle', Chris@0: ], 'language_content_settings'); Chris@0: $this->assertSame('test_entity_type.test_bundle', $config->id()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::getTargetEntityTypeId Chris@0: */ Chris@0: public function testTargetEntityTypeId() { Chris@0: $config = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_bundle', Chris@0: ], 'language_content_settings'); Chris@0: $this->assertSame('test_entity_type', $config->getTargetEntityTypeId()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::getTargetBundle Chris@0: */ Chris@0: public function testTargetBundle() { Chris@0: $config = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_bundle', Chris@0: ], 'language_content_settings'); Chris@0: $this->assertSame('test_bundle', $config->getTargetBundle()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::getDefaultLangcode Chris@0: * @covers ::setDefaultLangcode Chris@0: * Chris@0: * @dataProvider providerDefaultLangcode Chris@0: */ Chris@0: public function testDefaultLangcode(ContentLanguageSettings $config, $expected) { Chris@0: $this->assertSame($expected, $config->getDefaultLangcode()); Chris@0: } Chris@0: Chris@0: public function providerDefaultLangcode() { Chris@0: $langcode = $this->randomMachineName(); Chris@0: $config = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_bundle', Chris@0: ], 'language_content_settings'); Chris@0: $config->setDefaultLangcode($langcode); Chris@0: Chris@0: $defaultConfig = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_default_language_bundle', Chris@0: ], 'language_content_settings'); Chris@0: Chris@0: return [ Chris@0: [$config, $langcode], Chris@0: [$defaultConfig, LanguageInterface::LANGCODE_SITE_DEFAULT], Chris@0: ]; Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::setLanguageAlterable Chris@0: * @covers ::isLanguageAlterable Chris@0: * Chris@0: * @dataProvider providerLanguageAlterable Chris@0: */ Chris@0: public function testLanguageAlterable(ContentLanguageSettings $config, $expected) { Chris@0: $this->assertSame($expected, $config->isLanguageAlterable()); Chris@0: } Chris@0: Chris@0: public function providerLanguageAlterable() { Chris@0: $alterableConfig = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_bundle', Chris@0: ], 'language_content_settings'); Chris@0: $alterableConfig->setLanguageAlterable(TRUE); Chris@0: Chris@0: $nonAlterableConfig = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_fixed_language_bundle', Chris@0: ], 'language_content_settings'); Chris@0: $nonAlterableConfig->setLanguageAlterable(FALSE); Chris@0: Chris@0: $defaultConfig = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_default_language_bundle', Chris@0: ], 'language_content_settings'); Chris@0: Chris@0: return [ Chris@0: [$alterableConfig, TRUE], Chris@0: [$nonAlterableConfig, FALSE], Chris@0: [$defaultConfig, FALSE], Chris@0: ]; Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::isDefaultConfiguration Chris@0: * Chris@0: * @dataProvider providerIsDefaultConfiguration Chris@0: */ Chris@0: public function testIsDefaultConfiguration(ContentLanguageSettings $config, $expected) { Chris@0: $this->assertSame($expected, $config->isDefaultConfiguration()); Chris@0: } Chris@0: Chris@0: public function providerIsDefaultConfiguration() { Chris@0: $alteredLanguage = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_bundle', Chris@0: ], 'language_content_settings'); Chris@0: $alteredLanguage->setLanguageAlterable(TRUE); Chris@0: Chris@0: $alteredDefaultLangcode = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_fixed_language_bundle', Chris@0: ], 'language_content_settings'); Chris@0: $alteredDefaultLangcode->setDefaultLangcode($this->randomMachineName()); Chris@0: Chris@0: $defaultConfig = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_default_language_bundle', Chris@0: ], 'language_content_settings'); Chris@0: Chris@0: return [ Chris@0: [$alteredLanguage, FALSE], Chris@0: [$alteredDefaultLangcode, FALSE], Chris@0: [$defaultConfig, TRUE], Chris@0: ]; Chris@0: } Chris@0: Chris@0: /** Chris@0: * @covers ::loadByEntityTypeBundle Chris@0: * Chris@0: * @dataProvider providerLoadByEntityTypeBundle Chris@0: */ Chris@0: public function testLoadByEntityTypeBundle($config_id, ContentLanguageSettings $existing_config = NULL, $expected_langcode, $expected_language_alterable) { Chris@0: list($type, $bundle) = explode('.', $config_id); Chris@0: Chris@0: $nullConfig = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => $type, Chris@0: 'target_bundle' => $bundle, Chris@0: ], 'language_content_settings'); Chris@0: $this->configEntityStorageInterface Chris@0: ->expects($this->any()) Chris@0: ->method('load') Chris@0: ->with($config_id) Chris@0: ->will($this->returnValue($existing_config)); Chris@0: $this->configEntityStorageInterface Chris@0: ->expects($this->any()) Chris@0: ->method('create') Chris@0: ->will($this->returnValue($nullConfig)); Chris@0: Chris@14: $this->entityTypeManager Chris@0: ->expects($this->any()) Chris@0: ->method('getStorage') Chris@0: ->with('language_content_settings') Chris@0: ->will($this->returnValue($this->configEntityStorageInterface)); Chris@14: Chris@14: $entity_type_repository = $this->getMockForAbstractClass(EntityTypeRepositoryInterface::class); Chris@14: $entity_type_repository->expects($this->any()) Chris@0: ->method('getEntityTypeFromClass') Chris@14: ->with(ContentLanguageSettings::class) Chris@0: ->willReturn('language_content_settings'); Chris@0: Chris@14: \Drupal::getContainer()->set('entity_type.repository', $entity_type_repository); Chris@14: Chris@0: $config = ContentLanguageSettings::loadByEntityTypeBundle($type, $bundle); Chris@0: Chris@0: $this->assertSame($expected_langcode, $config->getDefaultLangcode()); Chris@0: $this->assertSame($expected_language_alterable, $config->isLanguageAlterable()); Chris@0: } Chris@0: Chris@0: public function providerLoadByEntityTypeBundle() { Chris@0: $alteredLanguage = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_bundle', Chris@0: ], 'language_content_settings'); Chris@0: $alteredLanguage->setLanguageAlterable(TRUE); Chris@0: Chris@0: $langcode = $this->randomMachineName(); Chris@0: $alteredDefaultLangcode = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_fixed_language_bundle', Chris@0: ], 'language_content_settings'); Chris@0: $alteredDefaultLangcode->setDefaultLangcode($langcode); Chris@0: Chris@0: $defaultConfig = new ContentLanguageSettings([ Chris@0: 'target_entity_type_id' => 'test_entity_type', Chris@0: 'target_bundle' => 'test_default_language_bundle', Chris@0: ], 'language_content_settings'); Chris@0: Chris@0: return [ Chris@0: ['test_entity_type.test_bundle', $alteredLanguage, LanguageInterface::LANGCODE_SITE_DEFAULT, TRUE], Chris@0: ['test_entity_type.test_fixed_language_bundle', $alteredDefaultLangcode, $langcode, FALSE], Chris@0: ['test_entity_type.test_default_language_bundle', $defaultConfig, LanguageInterface::LANGCODE_SITE_DEFAULT, FALSE], Chris@0: ['test_entity_type.null_bundle', NULL, LanguageInterface::LANGCODE_SITE_DEFAULT, FALSE], Chris@0: ]; Chris@0: } Chris@0: Chris@0: }