test_helpers-1.0.0-alpha6/tests/modules/test_helpers_example/tests/src/Unit/NodeAgeComputedFieldItemListTest.php

tests/modules/test_helpers_example/tests/src/Unit/NodeAgeComputedFieldItemListTest.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\test_helpers_example\Unit;

use Drupal\Core\Entity\Plugin\DataType\EntityAdapter;
use Drupal\Core\TypedData\DataDefinitionInterface;
use Drupal\Tests\UnitTestCase;
use Drupal\node\Entity\Node;
use Drupal\test_helpers\TestHelpers;
use Drupal\test_helpers_example\Plugin\Field\NodeAgeComputedFieldItemList;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Group;

/**
 * Tests Test Helpers API, related to entities.
 */
#[CoversClass(NodeAgeComputedFieldItemList::class)]
#[Group('test_helpers_example')]
class NodeAgeComputedFieldItemListTest extends UnitTestCase {

  /**
   * Tests Test Helpers API, related to entities.
   */
  public function testComputeValue() {
    $timeCreated = 500;
    $currentTime = 1000;
    TestHelpers::service('datetime.time', NULL, NULL, ['getCurrentTime'])
      ->method('getCurrentTime')->willReturnCallback(
        function () use (&$currentTime) {
          return $currentTime;
        }
      );
    $node = TestHelpers::createEntity(Node::class, ['created' => $timeCreated]);
    $fieldItemList = TestHelpers::createPartialMockWithConstructor(
      NodeAgeComputedFieldItemList::class,
      ['createItem'],
      [
        $this->createMock(DataDefinitionInterface::class),
        'field_node_age',
        EntityAdapter::createFromEntity($node),
      ],
    );
    $fieldItemList->method('createItem')->willReturnCallback(
      function ($offset = 0, $value = NULL) use (&$currentTime, &$timeCreated) {
        $this->assertEquals($currentTime - $timeCreated, $value);
      }
    );
    TestHelpers::callPrivateMethod($fieldItemList, 'computeValue');
    $currentTime = 2000;
    TestHelpers::callPrivateMethod($fieldItemList, 'computeValue');
  }

}

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

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