entity_to_text-1.0.x-dev/modules/entity_to_text_tika/tests/src/Unit/PreProcessFileEventTest.php

modules/entity_to_text_tika/tests/src/Unit/PreProcessFileEventTest.php
<?php

namespace Drupal\Tests\entity_to_text_tika\Unit;

use Drupal\Core\File\FileSystemInterface;
use Drupal\Core\Logger\LoggerChannelFactoryInterface;
use Drupal\Core\Site\Settings;
use Drupal\entity_to_text_tika\Event\EntityToTextTikaEvents;
use Drupal\entity_to_text_tika\Event\PreProcessFileEvent;
use Drupal\entity_to_text_tika\Extractor\FileToText;
use Drupal\file\Entity\File;
use Drupal\Tests\UnitTestCase;
use Prophecy\Prophecy\ObjectProphecy;
use Prophecy\Prophet;
use Psr\Log\LoggerInterface;
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
use Vaites\ApacheTika\Clients\WebClient;

/**
 * @coversDefaultClass \Drupal\entity_to_text_tika\Event\PreProcessFileEvent
 *
 * @group entity_to_text
 * @group entity_to_text_tika
 */
class PreProcessFileEventTest extends UnitTestCase {
  /**
   * A mocked instance of a Tika client.
   *
   * @var \Prophecy\Prophecy\ObjectProphecy|\Vaites\ApacheTika\Clients\WebClient
   */
  protected $client;

  /**
   * The event dispatcher.
   *
   * @var \Prophecy\Prophecy\ObjectProphecy|\Symfony\Contracts\EventDispatcher\EventDispatcherInterface
   */
  private $eventDispatcher;

  /**
   * The prophecy object.
   *
   * @var \Prophecy\Prophet
   */
  private $prophet;

  /**
   * The File To Text extractor.
   *
   * @var \Drupal\entity_to_text_tika\Extractor\FileToText
   */
  private $fileToText;

  /**
   * The file used for testing.
   *
   * @var \Drupal\Tests\entity_to_text_tika\Unit\File|\Prophecy\Prophecy\ObjectProphecy
   */
  private ObjectProphecy|File $testFile;

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();

    $this->prophet = new Prophet();
    $settings['entity_to_text_tika.connection']['host'] = 'tika';
    $settings['entity_to_text_tika.connection']['port'] = '9998';
    $settings = new Settings($settings);

    $this->client = $this->prophet->prophesize(WebClient::class);
    $fileSystem = $this->prophet->prophesize(FileSystemInterface::class);
    $loggerFactory = $this->prophet->prophesize(LoggerChannelFactoryInterface::class);
    $logger = $this->prophet->prophesize(LoggerInterface::class);
    $this->eventDispatcher = $this->prophet->prophesize(EventDispatcherInterface::class);

    $loggerFactory->get('entity_to_text')
      ->willReturn($logger->reveal());

    // Create a test file object.
    $this->testFile = $this->prophet->prophesize(File::class);
    $this->testFile->getFileUri()
      ->willReturn('public://file/test.txt')
      ->shouldBeCalled();

    $fileSystem->realpath('public://file/test.txt')
      ->willReturn('/var/www/web/sites/default/files/file/test.txt')
      ->shouldBeCalled();

    $this->client->getText('/var/www/web/sites/default/files/file/test.txt')
      ->willReturn('Commodo duis lorem vestibulum imperdiet vel hac')
      ->shouldBeCalled();
    $this->client->setOCRLanguage('eng')->shouldBeCalled();

    $this->fileToText = new FileToText($settings, $fileSystem->reveal(), $loggerFactory->reveal(), $this->eventDispatcher->reveal());
    $this->fileToText->setClient($this->client->reveal());
  }

  /**
   * {@inheritdoc}
   */
  protected function tearDown(): void {
    parent::tearDown();

    $this->prophet->checkPredictions();
  }

  /**
   * Ensure the PreProcessFileEvent is triggered once on FileToText extractor.
   */
  public function testFileToTextTrigger(): void {
    // The event that must be dispatch.
    $event = new PreProcessFileEvent($this->client->reveal(), $this->testFile->reveal());

    $this->eventDispatcher->dispatch($event, EntityToTextTikaEvents::PRE_PROCESS_FILE)
      ->willReturn($event)
      ->shouldBeCalled();
    self::assertEquals('Commodo duis lorem vestibulum imperdiet vel hac', $this->fileToText->fromFileToText($this->testFile->reveal()));
  }

}

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

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