entity_hierarchy-8.x-2.24/tests/src/Kernel/ParentCandidateTest.php
tests/src/Kernel/ParentCandidateTest.php
<?php
namespace Drupal\Tests\entity_hierarchy\Kernel;
use Drupal\entity_test\Entity\EntityTest;
use Drupal\entity_test\Entity\EntityTestRev;
use Drupal\field\Entity\FieldConfig;
/**
* Defines a class for testing ParentCandidate.
*
* @group entity_hierarchy
*/
class ParentCandidateTest extends EntityHierarchyKernelTestBase {
/**
* Tests field candidates.
*/
public function testGetParentCandidate(): void {
$this->installEntitySchema('entity_test_rev');
$parentCandidate = $this->container->get('entity_hierarchy.information.parent_candidate');
$this->assertEquals(['parents'], $parentCandidate->getCandidateFields($this->parent));
entity_test_create_bundle('fooey');
$entity = EntityTest::create(['type' => 'fooey']);
$entity->save();
$this->assertEquals(['parents'], $parentCandidate->getCandidateFields($entity));
// Add a bundle limit.
$field = FieldConfig::load('entity_test.entity_test.parents');
$settings = $field->getSetting('handler_settings');
$settings['target_bundles'] = ['entity_test'];
$field->setSetting('handler_settings', $settings);
$field->save();
$this->assertEquals([], $parentCandidate->getCandidateFields($entity));
$entity_rev = EntityTestRev::create();
$entity_rev->save();
$this->assertEquals([], $parentCandidate->getCandidateFields($entity_rev));
}
/**
* Tests bundles.
*/
public function testGetBundles(): void {
$parentCandidate = $this->container->get('entity_hierarchy.information.parent_candidate');
entity_test_create_bundle('fooey', 'Fooey');
entity_test_create_bundle('bar');
$this->setupEntityHierarchyField(self::ENTITY_TYPE, 'fooey', self::FIELD_NAME);
$this->setupEntityHierarchyField(self::ENTITY_TYPE, 'bar', self::FIELD_NAME);
$bundles = $parentCandidate->getCandidateBundles($this->parent);
$this->assertEquals([
'entity_test',
'fooey',
'bar',
], array_keys($bundles[self::FIELD_NAME]));
$this->assertEquals(['label' => 'Fooey'], $bundles[self::FIELD_NAME]['fooey']);
// Add a bundle limit - prevent fooey bundle from referencing the
// entity_test bundle.
$field = FieldConfig::load('entity_test.fooey.parents');
$settings = $field->getSetting('handler_settings');
$settings['target_bundles'] = ['bar'];
$field->setSetting('handler_settings', $settings);
$field->save();
$bundles = $parentCandidate->getCandidateBundles($this->parent);
$this->assertEquals([
'entity_test',
'bar',
], array_keys($bundles[self::FIELD_NAME]));
}
}
