EntityTestHelper.php

Namespace

Drupal\entity_test

File

core/modules/system/tests/modules/entity_test/src/EntityTestHelper.php

View source
<?php

declare (strict_types=1);
namespace Drupal\entity_test;


/**
 * Class for the entity API providing several entity types for testing.
 */
class EntityTestHelper {
    
    /**
     * Returns a list of test entity types.
     *
     * The returned entity types are one for each available entity storage type:
     * - The plain entity_test type supports neither revisions nor multilingual
     *   properties.
     * - The entity_test_mul type supports multilingual properties.
     * - The entity_test_rev type supports revisions.
     * - The entity_test_mulrev type supports both revisions and multilingual
     *   properties.
     *
     * @param int $filter
     *   Either EntityTestTypesFilter::Revisable to only return revisable entity types or
     *   EntityTestTypesFilter::Multilingual to only return multilingual ones. Defaults
     *   to NULL, which returns all.
     *
     * @return array
     *   List with entity_types.
     */
    public static function getEntityTypes($filter = NULL) : array {
        $types = [];
        if ($filter === NULL || $filter === EntityTestTypesFilter::Routing) {
            $types[] = 'entity_test';
        }
        if ($filter != EntityTestTypesFilter::Revisable) {
            $types[] = 'entity_test_mul';
            $types[] = 'entity_test_mul_langcode_key';
            $types[] = 'entity_test_mul_changed';
        }
        if ($filter != EntityTestTypesFilter::Multilingual) {
            $types[] = 'entity_test_rev';
        }
        if ($filter === EntityTestTypesFilter::Routing) {
            $types[] = 'entity_test_base_field_display';
            $types[] = 'entity_test_string_id';
            $types[] = 'entity_test_uuid_id';
            $types[] = 'entity_test_no_id';
            $types[] = 'entity_test_mul_with_bundle';
        }
        $types[] = 'entity_test_mulrev';
        $types[] = 'entity_test_mulrev_changed';
        return array_combine($types, $types);
    }
    
    /**
     * Creates a new bundle for entity_test entities.
     *
     * @param string $bundle
     *   The machine-readable name of the bundle.
     * @param string $text
     *   (optional) The human-readable name of the bundle. If none is provided, the
     *   machine name will be used.
     * @param string $entity_type
     *   (optional) The entity type for which the bundle is created. Defaults to
     *   'entity_test'.
     *
     * @see \Drupal\entity_test\Hook\EntityTestHooks::entityBundleInfo()
     */
    public static function createBundle($bundle, $text = NULL, $entity_type = 'entity_test') : void {
        $bundles = \Drupal::state()->get($entity_type . '.bundles', [
            $entity_type => [
                'label' => 'Entity Test Bundle',
            ],
        ]);
        $bundles += [
            $bundle => [
                'label' => $text ?: $bundle,
            ],
        ];
        \Drupal::state()->set($entity_type . '.bundles', $bundles);
        \Drupal::service('entity_bundle.listener')->onBundleCreate($bundle, $entity_type);
    }
    
    /**
     * Deletes a bundle for entity_test entities.
     *
     * @param string $bundle
     *   The machine-readable name of the bundle to delete.
     * @param string $entity_type
     *   (optional) The entity type for which the bundle is deleted. Defaults to
     *   'entity_test'.
     *
     * @see \Drupal\entity_test\Hook\EntityTestHooks::entityBundleInfo()
     */
    public static function deleteBundle($bundle, $entity_type = 'entity_test') : void {
        $bundles = \Drupal::state()->get($entity_type . '.bundles', [
            $entity_type => [
                'label' => 'Entity Test Bundle',
            ],
        ]);
        unset($bundles[$bundle]);
        \Drupal::state()->set($entity_type . '.bundles', $bundles);
        \Drupal::service('entity_bundle.listener')->onBundleDelete($bundle, $entity_type);
    }

}

Classes

Title Deprecated Summary
EntityTestHelper Class for the entity API providing several entity types for testing.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.