test_helpers-1.0.0-alpha6/tests/src/Unit/TestHelpersApi/CallEventSubscriberTest.php

tests/src/Unit/TestHelpersApi/CallEventSubscriberTest.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\test_helpers\Unit\TestHelpersApi;

use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\Tests\UnitTestCase;
use Drupal\test_helpers\TestHelpers;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\CoversMethod;
use PHPUnit\Framework\Attributes\Group;

/**
 * Tests CreateEntityStub API function.
 */
#[CoversClass(TestHelpers::class)]
#[Group('test_helpers')]
#[CoversMethod(TestHelpers::class, 'callEventSubscriber')]
class CallEventSubscriberTest extends UnitTestCase {

  /**
   * Tests the callEventSubscriber function.
   */
  public function testCallEventSubscriber() {
    $event = new EventStub();
    $serviceInfo = [
      dirname(__FILE__) . '/CallEventSubscriberTestServiceStub.yml',
      'test_helpers.event_subscriber_stub',
    ];
    TestHelpers::callEventSubscriber(
      $serviceInfo,
      'event1',
      $event,
    );
    $this->assertEquals('value1', $event->value);

    TestHelpers::callEventSubscriber(
      $serviceInfo,
      'event2',
      $event,
    );
    $this->assertEquals('value2', $event->value);

    $eventSubscriberStubMocked = TestHelpers::createPartialMock(EventSubscriberStub::class, ['method2']);
    TestHelpers::setMockedClassMethod($eventSubscriberStubMocked, 'method2', function ($event) {
      $event->value = 'value2mocked';
    });
    TestHelpers::callEventSubscriber(
      $eventSubscriberStubMocked,
      'event2',
      $event,
    );
    $this->assertEquals('value2mocked', $event->value);

    TestHelpers::service('string_translation');
    TestHelpers::callEventSubscriber(
      $serviceInfo,
      'event3',
      $event,
    );
    $this->assertEquals('value2', $event->value);

    // The case with just the service name as an argument is tested in the
    // Drupal\Tests\test_helpers_example\Unit\ConfigEventsSubscriberTest()
    // because it requires a 'services.yml' file to be present, but for this
    // module it is not needed.
  }

  /**
   * Tests the callEventSubscriber function with no tag.
   */
  public function testCallEventSubscriberWithNoTag() {
    $event = new EventStub();
    $serviceInfo = [
      dirname(__FILE__) . '/CallEventSubscriberTestServiceStub.yml',
      'test_helpers.event_subscriber_stub_no_tag',
    ];
    try {
      TestHelpers::callEventSubscriber(
      $serviceInfo,
      'event3',
      $event,
      );
      $this->fail('An exception should be thrown.');
    }
    catch (\Exception) {
      $this->assertTrue(TRUE);
    }
  }

}

/**
 * A helper class for testing.
 */
#[CoversClass(\Drupal\test_helpers\TestHelpers::class)]
#[Group('test_helpers')]
class EventStub {

  /**
   * A variable.
   *
   * @var mixed
   */
  public $value;

}

/**
 * A helper class with interface for testing.
 */
#[CoversClass(\Drupal\test_helpers\TestHelpers::class)]
#[Group('test_helpers')]
class EventSubscriberStub implements EventSubscriberInterface {

  use StringTranslationTrait;

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents(): array {
    return [
      'event1' => 'method1',
      'event2' => ['method2', 10],
      'event3' => [
        ['method2', 100],
        ['method1', 50],
        ['method3', 10],
      ],
      'event4' => ['method2'],
    ];
  }

  /**
   * Method test function 1.
   */
  public function method1($event) {
    $event->value = 'value1';
  }

  /**
   * Method test function 2.
   */
  public function method2($event) {
    $event->value = 'value2';
  }

  /**
   * Method test function 3.
   */
  public function method3($event) {
    $event->value = $this->t('value3');
  }

}

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

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