DevelEntityToArrayTest.php

Namespace

Drupal\Tests\devel\Kernel

File

tests/src/Kernel/DevelEntityToArrayTest.php

View source
<?php

namespace Drupal\Tests\devel\Kernel;

use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
use Drupal\Tests\field\Traits\EntityReferenceFieldCreationTrait;

/**
 * Test Load with References.
 *
 * @group devel
 */
class DevelEntityToArrayTest extends EntityKernelTestBase {
    use EntityReferenceFieldCreationTrait;
    
    /**
     * The entity type used in this test.
     *
     * @var string
     */
    protected $entityType = 'entity_test';
    
    /**
     * The entity type that is being referenced.
     *
     * @var string
     */
    protected $referencedEntityType = 'entity_test_rev';
    
    /**
     * The bundle used in this test.
     *
     * @var string
     */
    protected $bundle = 'entity_test';
    
    /**
     * The name of the field used in this test.
     *
     * @var string
     */
    protected $fieldName = 'field_test';
    
    /**
     * Modules to install.
     *
     * @var array
     */
    protected static $modules = [
        'entity_test',
        'devel',
    ];
    
    /**
     * {@inheritDoc}
     */
    protected function setUp() : void {
        parent::setUp();
        $this->installEntitySchema('entity_test_rev');
        $user = $this->createUser(permissions: [
            'access devel information',
        ], values: [
            'name' => 'test',
        ]);
        
        /** @var \Drupal\Core\Session\AccountProxyInterface $current_user */
        $current_user = $this->container
            ->get('current_user');
        $current_user->setAccount($user);
        // Create a field.
        $this->createEntityReferenceField($this->entityType, $this->bundle, $this->fieldName, 'Field test', $this->referencedEntityType, 'default', [
            'target_bundles' => [
                $this->bundle,
            ],
        ], FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED);
    }
    
    /**
     * Test method.
     */
    public function testWithReferences() : void {
        // Create the parent entity.
        $entity = $this->container
            ->get('entity_type.manager')
            ->getStorage($this->entityType)
            ->create([
            'type' => $this->bundle,
        ]);
        // Create three target entities and attach them to parent field.
        $target_entities = [];
        $reference_field = [];
        for ($i = 0; $i < 3; ++$i) {
            $target_entity = $this->container
                ->get('entity_type.manager')
                ->getStorage($this->referencedEntityType)
                ->create([
                'type' => $this->bundle,
                'name' => 'Related ' . $i,
            ]);
            $target_entity->save();
            $target_entities[] = $target_entity;
            $reference_field[]['target_id'] = $target_entity->id();
        }
        // Set the field value.
        $entity->{$this->fieldName}
            ->setValue($reference_field);
        $entity->save();
        
        /** @var \Drupal\devel\DevelDumperManagerInterface $dumper */
        $dumper = $this->container
            ->get('devel.dumper');
        $result = $dumper->export($entity, NULL, 'drupal_variable', TRUE);
        for ($i = 0; $i < 3; ++$i) {
            $this->assertStringContainsString('Related ' . $i, (string) $result, 'The referenced entities are present in the dumper output.');
        }
    }

}

Classes

Title Deprecated Summary
DevelEntityToArrayTest Test Load with References.