test_support-1.0.x-dev/tests/src/Kernel/Support/InteractsWithEntitiesTest.php

tests/src/Kernel/Support/InteractsWithEntitiesTest.php
<?php

namespace Drupal\Tests\test_support\Kernel\Support;

use Drupal\KernelTests\KernelTestBase;
use Drupal\node\Entity\Node;
use Drupal\node\Entity\NodeType;
use Drupal\node\NodeInterface;
use Drupal\Tests\test_support\Traits\Support\InteractsWithEntities;

class InteractsWithEntitiesTest extends KernelTestBase
{
    use InteractsWithEntities;

    /** @var string[] */
    protected static $modules = [
        'system',
        'node',
        'user',
    ];

    protected function setUp(): void
    {
        parent::setUp();

        $this->installEntitySchema('node');
        $this->installEntitySchema('user');

        $this->installSchema('node', 'node_access');

        NodeType::create([
            'type' => 'page',
            'name' => 'Basic page',
        ])->save();
    }

    /** @test */
    public function create_entity(): void
    {
        $node = $this->createEntity('node', [
            'title' => 'Example node',
            'type' => 'page',
        ]);

        $this->assertInstanceOf(NodeInterface::class, $node);
        $this->assertEquals('Example node', $node->title->value);
    }

    /** @test */
    public function update_entity(): void
    {
        $node = $this->createEntity('node', [
            'title' => 'Example node',
            'type' => 'page',
        ]);

        $this->assertInstanceOf(NodeInterface::class, $node);
        $this->assertEquals('Example node', $node->title->value);

        $this->updateEntity($node, [
            'title' => 'Updated Example Title',
        ]);

        $this->assertInstanceOf(NodeInterface::class, $node);
        $this->assertEquals('Updated Example Title', $node->title->value);
    }

    /** @test */
    public function refresh_entity(): void
    {
        /** @var \Drupal\node\Entity\Node $node */
        $node = $this->createEntity('node', [
            'nid' => 1000,
            'title' => 'Example Title',
            'type' => 'page',
        ]);

        $this->assertEquals('Example Title', $node->get('title')->getString());

        $this->updateNodeTitle($node->id());

        $this->refreshEntity($node);

        $this->assertEquals('Example Title Updated', $node->get('title')->getString());
    }

    /** @param int|string|null $nodeId */
    private function updateNodeTitle($nodeId): void
    {
        $node = $this->storage('node')->load($nodeId);

        if ($node instanceof Node === false) {
            $this->fail('Could not load node with ID: ' . $nodeId);
        }

        $node->set('title', 'Example Title Updated')->save();
    }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc