X-Git-Url: https://yaffs.net/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Ftests%2FDrupal%2FTests%2FCore%2FPlugin%2FContext%2FContextDefinitionIsSatisfiedTest.php;fp=web%2Fcore%2Ftests%2FDrupal%2FTests%2FCore%2FPlugin%2FContext%2FContextDefinitionIsSatisfiedTest.php;h=c93e77de9f2b96a56a7b5f82949c18dc2c132233;hb=0bf8d09d2542548982e81a441b1f16e75873a04f;hp=edde3f98220ae5b8b6d3e2b40786ef711694b7be;hpb=74df008bdbb3a11eeea356744f39b802369bda3c;p=yaffs-website diff --git a/web/core/tests/Drupal/Tests/Core/Plugin/Context/ContextDefinitionIsSatisfiedTest.php b/web/core/tests/Drupal/Tests/Core/Plugin/Context/ContextDefinitionIsSatisfiedTest.php index edde3f982..c93e77de9 100644 --- a/web/core/tests/Drupal/Tests/Core/Plugin/Context/ContextDefinitionIsSatisfiedTest.php +++ b/web/core/tests/Drupal/Tests/Core/Plugin/Context/ContextDefinitionIsSatisfiedTest.php @@ -5,18 +5,12 @@ namespace Drupal\Tests\Core\Plugin\Context; use Drupal\Core\Cache\NullBackend; use Drupal\Core\DependencyInjection\ClassResolverInterface; use Drupal\Core\DependencyInjection\ContainerBuilder; -use Drupal\Core\Entity\ContentEntityInterface; -use Drupal\Core\Entity\ContentEntityStorageInterface; -use Drupal\Core\Entity\EntityManagerInterface; -use Drupal\Core\Entity\EntityStorageInterface; -use Drupal\Core\Entity\EntityType; -use Drupal\Core\Entity\EntityTypeBundleInfoInterface; -use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Plugin\Context\Context; use Drupal\Core\Plugin\Context\ContextDefinition; use Drupal\Core\TypedData\TypedDataManager; use Drupal\Core\Validation\ConstraintManager; +use Drupal\Tests\Core\Plugin\Fixtures\InheritedContextDefinition; use Drupal\Tests\UnitTestCase; use Prophecy\Argument; @@ -26,27 +20,6 @@ use Prophecy\Argument; */ class ContextDefinitionIsSatisfiedTest extends UnitTestCase { - /** - * The entity type manager. - * - * @var \Drupal\Core\Entity\EntityTypeManagerInterface - */ - protected $entityTypeManager; - - /** - * The entity manager. - * - * @var \Drupal\Core\Entity\EntityManagerInterface - */ - protected $entityManager; - - /** - * The entity type bundle info. - * - * @var \Drupal\Core\Entity\EntityTypeBundleInfoInterface - */ - protected $entityTypeBundleInfo; - /** * {@inheritdoc} */ @@ -56,7 +29,6 @@ class ContextDefinitionIsSatisfiedTest extends UnitTestCase { $namespaces = new \ArrayObject([ 'Drupal\\Core\\TypedData' => $this->root . '/core/lib/Drupal/Core/TypedData', 'Drupal\\Core\\Validation' => $this->root . '/core/lib/Drupal/Core/Validation', - 'Drupal\\Core\\Entity' => $this->root . '/core/lib/Drupal/Core/Entity', ]); $cache_backend = new NullBackend('cache'); $module_handler = $this->prophesize(ModuleHandlerInterface::class); @@ -70,21 +42,13 @@ class ContextDefinitionIsSatisfiedTest extends UnitTestCase { $type_data_manager = new TypedDataManager($namespaces, $cache_backend, $module_handler->reveal(), $class_resolver->reveal()); $type_data_manager->setValidationConstraintManager(new ConstraintManager($namespaces, $cache_backend, $module_handler->reveal())); - $this->entityTypeManager = $this->prophesize(EntityTypeManagerInterface::class); - $this->entityManager = $this->prophesize(EntityManagerInterface::class); - - $this->entityTypeBundleInfo = $this->prophesize(EntityTypeBundleInfoInterface::class); - $container = new ContainerBuilder(); $container->set('typed_data_manager', $type_data_manager); - $container->set('entity_type.manager', $this->entityTypeManager->reveal()); - $container->set('entity.manager', $this->entityManager->reveal()); - $container->set('entity_type.bundle.info', $this->entityTypeBundleInfo->reveal()); \Drupal::setContainer($container); } /** - * Asserts that the requirement is satisfied as expected. + * Tests that context requirements is satisfied as expected. * * @param bool $expected * The expected outcome. @@ -94,13 +58,7 @@ class ContextDefinitionIsSatisfiedTest extends UnitTestCase { * The context definition to check. * @param mixed $value * (optional) The value to set on the context, defaults to NULL. - */ - protected function assertRequirementIsSatisfied($expected, ContextDefinition $requirement, ContextDefinition $definition, $value = NULL) { - $context = new Context($definition, $value); - $this->assertSame($expected, $requirement->isSatisfiedBy($context)); - } - - /** + * * @covers ::isSatisfiedBy * @covers ::getSampleValues * @covers ::getConstraintObjects @@ -108,22 +66,8 @@ class ContextDefinitionIsSatisfiedTest extends UnitTestCase { * @dataProvider providerTestIsSatisfiedBy */ public function testIsSatisfiedBy($expected, ContextDefinition $requirement, ContextDefinition $definition, $value = NULL) { - $entity_storage = $this->prophesize(EntityStorageInterface::class); - $content_entity_storage = $this->prophesize(ContentEntityStorageInterface::class); - $this->entityTypeManager->getStorage('test_config')->willReturn($entity_storage->reveal()); - $this->entityTypeManager->getStorage('test_content')->willReturn($content_entity_storage->reveal()); - $this->entityManager->getDefinitions()->willReturn([ - 'test_config' => new EntityType(['id' => 'test_config']), - 'test_content' => new EntityType(['id' => 'test_content']), - ]); - $this->entityTypeBundleInfo->getBundleInfo('test_config')->willReturn([ - 'test_config' => ['label' => 'test_config'], - ]); - $this->entityTypeBundleInfo->getBundleInfo('test_content')->willReturn([ - 'test_content' => ['label' => 'test_content'], - ]); - - $this->assertRequirementIsSatisfied($expected, $requirement, $definition, $value); + $context = new Context($definition, $value); + $this->assertSame($expected, $requirement->isSatisfiedBy($context)); } /** @@ -166,179 +110,14 @@ class ContextDefinitionIsSatisfiedTest extends UnitTestCase { new ContextDefinition('any'), 5, ]; - - // Entities without bundles. - $data['content entity, matching type, no value'] = [ - TRUE, - new ContextDefinition('entity:test_content'), - new ContextDefinition('entity:test_content'), - ]; - $entity = $this->prophesize(ContentEntityInterface::class)->willImplement(\IteratorAggregate::class); - $entity->getIterator()->willReturn(new \ArrayIterator([])); - $entity->getCacheContexts()->willReturn([]); - $entity->getCacheTags()->willReturn([]); - $entity->getCacheMaxAge()->willReturn(0); - $entity->getEntityTypeId()->willReturn('test_content'); - $data['content entity, matching type, correct value'] = [ - TRUE, - new ContextDefinition('entity:test_content'), - new ContextDefinition('entity:test_content'), - $entity->reveal(), - ]; - $data['content entity, incorrect manual constraint'] = [ - TRUE, - new ContextDefinition('entity:test_content'), - (new ContextDefinition('entity:test_content'))->addConstraint('EntityType', 'test_config'), - ]; - $data['config entity, matching type, no value'] = [ - TRUE, - new ContextDefinition('entity:test_config'), - new ContextDefinition('entity:test_config'), - ]; - - return $data; - } - - /** - * @covers ::isSatisfiedBy - * @covers ::getSampleValues - * @covers ::getConstraintObjects - * - * @dataProvider providerTestIsSatisfiedByGenerateBundledEntity - */ - public function testIsSatisfiedByGenerateBundledEntity($expected, array $requirement_bundles, array $candidate_bundles, array $bundles_to_instantiate = NULL) { - // If no bundles are explicitly specified, instantiate all bundles. - if (!$bundles_to_instantiate) { - $bundles_to_instantiate = $candidate_bundles; - } - - $content_entity_storage = $this->prophesize(ContentEntityStorageInterface::class); - foreach ($bundles_to_instantiate as $bundle) { - $entity = $this->prophesize(ContentEntityInterface::class)->willImplement(\IteratorAggregate::class); - $entity->getEntityTypeId()->willReturn('test_content'); - $entity->getIterator()->willReturn(new \ArrayIterator([])); - $entity->bundle()->willReturn($bundle); - $content_entity_storage->createWithSampleValues($bundle) - ->willReturn($entity->reveal()) - ->shouldBeCalled(); - } - - $this->entityTypeManager->getStorage('test_content')->willReturn($content_entity_storage->reveal()); - $this->entityManager->getDefinitions()->willReturn([ - 'test_content' => new EntityType(['id' => 'test_content']), - ]); - - $this->entityTypeBundleInfo->getBundleInfo('test_content')->willReturn([ - 'first_bundle' => ['label' => 'First bundle'], - 'second_bundle' => ['label' => 'Second bundle'], - 'third_bundle' => ['label' => 'Third bundle'], - ]); - - $requirement = new ContextDefinition('entity:test_content'); - if ($requirement_bundles) { - $requirement->addConstraint('Bundle', $requirement_bundles); - } - $definition = (new ContextDefinition('entity:test_content'))->addConstraint('Bundle', $candidate_bundles); - $this->assertRequirementIsSatisfied($expected, $requirement, $definition); - } - - /** - * Provides test data for ::testIsSatisfiedByGenerateBundledEntity(). - */ - public function providerTestIsSatisfiedByGenerateBundledEntity() { - $data = []; - $data['no requirement'] = [ - TRUE, - [], - ['first_bundle'], - ]; - $data['single requirement'] = [ - TRUE, - ['first_bundle'], - ['first_bundle'], - ]; - $data['single requirement, multiple candidates, satisfies last candidate'] = [ - TRUE, - ['third_bundle'], - ['first_bundle', 'second_bundle', 'third_bundle'], - ]; - $data['single requirement, multiple candidates, satisfies first candidate'] = [ + // Inherited context definition class. + $data['both any, inherited context requirement definition'] = [ TRUE, - ['first_bundle'], - ['first_bundle', 'second_bundle', 'third_bundle'], - // Once the first match is found, subsequent candidates are not checked. - ['first_bundle'], - ]; - $data['unsatisfied requirement'] = [ - FALSE, - ['second_bundle'], - ['first_bundle', 'third_bundle'], - ]; - $data['multiple requirements'] = [ - TRUE, - ['first_bundle', 'second_bundle'], - ['first_bundle'], + new InheritedContextDefinition('any'), + new ContextDefinition('any'), ]; - return $data; - } - - /** - * @covers ::isSatisfiedBy - * @covers ::getSampleValues - * @covers ::getConstraintObjects - * - * @dataProvider providerTestIsSatisfiedByPassBundledEntity - */ - public function testIsSatisfiedByPassBundledEntity($expected, $requirement_constraint) { - $this->entityManager->getDefinitions()->willReturn([ - 'test_content' => new EntityType(['id' => 'test_content']), - ]); - $this->entityTypeManager->getStorage('test_content')->shouldNotBeCalled(); - - $this->entityTypeBundleInfo->getBundleInfo('test_content')->willReturn([ - 'first_bundle' => ['label' => 'First bundle'], - 'second_bundle' => ['label' => 'Second bundle'], - 'third_bundle' => ['label' => 'Third bundle'], - ]); - - $entity = $this->prophesize(ContentEntityInterface::class)->willImplement(\IteratorAggregate::class); - $entity->getEntityTypeId()->willReturn('test_content'); - $entity->getIterator()->willReturn(new \ArrayIterator([])); - $entity->getCacheContexts()->willReturn([]); - $entity->getCacheTags()->willReturn([]); - $entity->getCacheMaxAge()->willReturn(0); - $entity->bundle()->willReturn('third_bundle'); - - $requirement = new ContextDefinition('entity:test_content'); - if ($requirement_constraint) { - $requirement->addConstraint('Bundle', $requirement_constraint); - } - $definition = new ContextDefinition('entity:test_content'); - $this->assertRequirementIsSatisfied($expected, $requirement, $definition, $entity->reveal()); - } - /** - * Provides test data for ::testIsSatisfiedByPassBundledEntity(). - */ - public function providerTestIsSatisfiedByPassBundledEntity() { - $data = []; - $data[] = [TRUE, []]; - $data[] = [FALSE, ['first_bundle']]; - $data[] = [FALSE, ['second_bundle']]; - $data[] = [TRUE, ['third_bundle']]; - $data[] = [TRUE, ['first_bundle', 'second_bundle', 'third_bundle']]; - $data[] = [FALSE, ['first_bundle', 'second_bundle']]; - $data[] = [TRUE, ['first_bundle', 'third_bundle']]; - $data[] = [TRUE, ['second_bundle', 'third_bundle']]; return $data; } } - -namespace Drupal\Core\Validation; - -if (!function_exists('t')) { - function t($string, array $args = []) { - return strtr($string, $args); - } -}