function EntityConverterTest::testRouteParamWithBundleDefinition

Same name in other branches
  1. 9 core/tests/Drupal/KernelTests/Core/ParamConverter/EntityConverterTest.php \Drupal\KernelTests\Core\ParamConverter\EntityConverterTest::testRouteParamWithBundleDefinition()
  2. 11.x core/tests/Drupal/KernelTests/Core/ParamConverter/EntityConverterTest.php \Drupal\KernelTests\Core\ParamConverter\EntityConverterTest::testRouteParamWithBundleDefinition()

Tests an entity route parameter having 'bundle' definition property.

@covers ::convert

File

core/tests/Drupal/KernelTests/Core/ParamConverter/EntityConverterTest.php, line 49

Class

EntityConverterTest
Tests the entity param converter.

Namespace

Drupal\KernelTests\Core\ParamConverter

Code

public function testRouteParamWithBundleDefinition() : void {
    $converter = $this->container
        ->get('paramconverter.entity');
    $entity1 = EntityTest::create([
        'name' => $this->randomString(),
        'type' => 'foo',
    ]);
    $entity1->save();
    $entity2 = EntityTest::create([
        'name' => $this->randomString(),
        'type' => 'bar',
    ]);
    $entity2->save();
    $entity3 = EntityTest::create([
        'name' => $this->randomString(),
        'type' => 'baz',
    ]);
    $entity3->save();
    $definition = [
        'type' => 'entity:entity_test',
        'bundle' => [
            'foo',
            'bar',
        ],
    ];
    // An entity whose bundle is in the definition list is converted.
    $converted = $converter->convert($entity1->id(), $definition, 'qux', []);
    $this->assertSame($entity1->id(), $converted->id());
    // An entity whose bundle is in the definition list is converted.
    $converted = $converter->convert($entity2->id(), $definition, 'qux', []);
    $this->assertSame($entity2->id(), $converted->id());
    // An entity whose bundle is missed from definition is not converted.
    $converted = $converter->convert($entity3->id(), $definition, 'qux', []);
    $this->assertNull($converted);
    // A non-existing entity returns NULL.
    $converted = $converter->convert('some-non-existing-entity-id', $definition, 'qux', []);
    $this->assertNull($converted);
    $definition = [
        'type' => 'entity:entity_test',
    ];
    // Check that all entities are returned when 'bundle' is not defined.
    $converted = $converter->convert($entity1->id(), $definition, 'qux', []);
    $this->assertSame($entity1->id(), $converted->id());
    $converted = $converter->convert($entity2->id(), $definition, 'qux', []);
    $this->assertSame($entity2->id(), $converted->id());
    $converted = $converter->convert($entity3->id(), $definition, 'qux', []);
    $this->assertSame($entity3->id(), $converted->id());
    $converted = $converter->convert('some-non-existing-entity-id', $definition, 'qux', []);
    $this->assertNull($converted);
}

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