tmgmt_smartling-8.x-4.11/tests/src/Kernel/BufferLoggerTest.php

tests/src/Kernel/BufferLoggerTest.php
<?php

namespace Drupal\Tests\tmgmt_smartling\Kernel;

use Drupal\Core\Logger\LoggerChannel;
use Drupal\Core\Logger\RfcLogLevel;

/**
 * Test BufferLogger.
 *
 * @group tmgmt_smartling_kernel
 */
class BufferLoggerTest extends SmartlingTestBase {

  protected $httpClient;
  protected $channel;
  protected $logger;

  protected static $modules = ['system'];

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

    $this->httpClient = $this->getMockBuilder('GuzzleHttp\Client')
      ->onlyMethods([
        'request',
      ])
      ->disableOriginalConstructor()
      ->getMock();

    $this->channel = new LoggerChannel('tmgmt_smartling');
    $this->logger = \Drupal::getContainer()->get('logger.smartling');
    $this->channel->addLogger($this->logger);

    $this->setPrivatePropertyValue($this->logger, 'httpClient', $this->httpClient);
  }

  public function testLog() {
    $this->setPrivatePropertyValue($this->logger, 'providerSettings', [
      'settings' => [
        'project_id' => 'test_project_id',
      ]
    ]);

    $this->httpClient->expects($this->once())
      ->method('request')
      ->with(
        'POST',
        'https://api.smartling.com/updates/status',
        $this->callback(
          function($subject) {
            return count($subject['json']['records']) == 1 &&
            $subject['json']['records'][0]['level_name'] == 'info' &&
            $subject['json']['records'][0]['channel'] == 'drupal-tmgmt-connector' &&
            $subject['json']['records'][0]['context']['projectId'] == 'test_project_id' &&
            preg_match('/(\d+\.x-\d+\.\d+|\d+\.x-\d+\.x-dev|\d\.\d\.\d-rc\d$|unknown)/', $subject['json']['records'][0]['context']['moduleVersion']) &&
            preg_match('/^tmgmt_extension_suit\/(.*) tmgmt\/(.*)$/', $subject['json']['records'][0]['context']['dependencies']) &&
            $subject['json']['records'][0]['context']['remoteChannel'] == 'tmgmt_smartling' &&
            $subject['json']['records'][0]['message'] == 'Test log record 1: info';
          }
        )
      );

    $this->channel->log(RfcLogLevel::INFO, 'Test log record 1: info');
    $this->logger->flush();
  }

  protected function setPrivatePropertyValue($object, $property, $value) {
    $reflection = new \ReflectionClass($object);
    $property = $reflection->getProperty($property);
    $property->setAccessible(true);
    $property->setValue($object, $value);
  }
}

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

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