freelinking-8.x-3.x-dev/tests/src/Unit/Plugin/Filter/FreelinkingTest.php

tests/src/Unit/Plugin/Filter/FreelinkingTest.php
<?php

namespace Drupal\Tests\freelinking\Unit\Plugin\Filter;

use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\filter\Plugin\FilterInterface;
use Drupal\freelinking\Plugin\Filter\Freelinking;
use Drupal\Tests\UnitTestCase;
use Prophecy\Argument;
use Prophecy\PhpUnit\ProphecyTrait;

/**
 * Tests the freelinking plugin.
 *
 * @group freelinking
 */
class FreelinkingTest extends UnitTestCase {

  use ProphecyTrait;

  /**
   * Freelinking filter plugin.
   *
   * @var \Drupal\freelinking\Plugin\Filter\Freelinking
   */
  protected $filter;

  /**
   * Translation interface mock.
   *
   * @var \Drupal\Core\StringTranslation\TranslationInterface
   */
  protected $translationInterfaceMock;

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();
    // Mock string translation service.
    $tProphet = $this->prophesize('\Drupal\Core\StringTranslation\TranslationInterface');
    $tProphet
      ->translateString(Argument::type('string'))
      ->will(function ($args) {
        return $args[0];
      });
    $this->translationInterfaceMock = $tProphet->reveal();

    // Create a freelinking plugin mock.
    $pluginProphet = $this->prophesize('\Drupal\freelinking\Plugin\FreelinkingPluginInterface');
    $pluginProphet->getPluginDefinition()->willReturn(['title' => 'Dummy']);
    $pluginProphet->getIndicator()->willReturn('indicator');
    $pluginProphet->getTip()->willReturn('tip');
    $mockPlugin = $pluginProphet->reveal();

    // Create a mock of the freelinking plugin manager.
    $managerProphet = $this->prophesize('\Drupal\freelinking\FreelinkingManagerInterface');
    $managerProphet
      ->createInstance(Argument::type('string'), Argument::type('array'))
      ->willReturn($mockPlugin);

    // Create a mock of the current user.
    $userProphet = $this->prophesize('\Drupal\Core\Session\AccountProxyInterface');

    $container = new ContainerBuilder();
    $container->set('string_translation', $this->translationInterfaceMock);
    $container->set('freelinking.manager', $managerProphet->reveal());
    $container->set('current_user', $userProphet->reveal());

    \Drupal::setContainer($container);

    $definition = [
      'id' => 'freelinking',
      'title' => 'Freelinking',
      'description' => 'Allowms for a flexible format for linking content.',
      'type' => FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE,
      'provider' => 'freelinking',
      'status' => FALSE,
      'settings' => [
        'default' => 'nodetitle',
        'global_options' => ['ignore_upi' => FALSE],
        'plugins' => [],
        'external_http_request' => FALSE,
      ],
      'weight' => 0,
    ];
    $configuration = [
      'settings' => [
        'plugins' => [
          'dummy' => [
            'plugin' => 'dummy',
            'enabled' => TRUE,
          ],
        ],
      ],
      'weight' => 0,
      'status' => TRUE,
    ];
    $this->filter = new Freelinking(
      $configuration,
      'freelinking',
      $definition,
      $container->get('freelinking.manager'),
      $container->get('current_user')
    );
  }

  /**
   * Asserts that a short tip is returned.
   */
  public function testShortTip() {
    $expected = new TranslatableMarkup(
      'Freelinking helps you easily create HTML links. Links take the form of <code>[[indicator:target|Title]].</code>',
      [],
      [],
      $this->translationInterfaceMock
    );
    $this->assertEquals($expected, $this->filter->tips());
  }

  /**
   * Asserts that a long tip is returned.
   */
  public function testLongTip() {
    $expectedText = <<<EOF
<p>Freelinking helps you easily create HTML links. Links take the form of <code>[[indicator:target|Title]].</code><br />
Below is a list of available types of freelinks you may use, organized as <strong>Plugin Name</strong>: [<em>indicator</em>].</p>
<ul><li><strong>Dummy</strong> [<em>indicator</em>]: tip</li></ul>
EOF;

    $expected = new TranslatableMarkup(
      $expectedText,
      [],
      [],
      $this->translationInterfaceMock
    );
    $this->assertEquals($expected, $this->filter->tips(TRUE));
  }

}

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

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