Commit d90a2cf0 authored by Jacob Friis Mathiasen's avatar Jacob Friis Mathiasen
Browse files

Issue #3309387: setMessage() check for TranslatableMarkup before parent...

Issue #3309387: setMessage() check for TranslatableMarkup before parent classFormattableMarkup and FormattableMarkup should toString(); unit test use mock translation service.
parent 1d2fd0c2
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -92,14 +92,14 @@ class JsonLogData {
    }

    if (($entry)) {
      if ($entry instanceof FormattableMarkup) {
        /** @var FormattableMarkup $entry */
        $this->message = $entry->jsonSerialize();
      }
      elseif ($entry instanceof TranslatableMarkup) {
      if ($entry instanceof TranslatableMarkup) {
        /** @var TranslatableMarkup $entry */
        $this->message = $entry->getUntranslatedString();
      }
      elseif ($entry instanceof FormattableMarkup) {
        /** @var FormattableMarkup $entry */
        $this->message = $entry->__toString();
      }
      else {
        /** @var string message */
        $this->message = empty($variables) ? $entry : strtr($entry, $variables);
+35 −0
Original line number Diff line number Diff line
<?php

namespace Drupal\Tests\jsonlog;

use Drupal\Core\StringTranslation\TranslationInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\StringTranslation\PluralTranslatableMarkup;

/**
 * Mock translation service.
 */
class MockTranslation implements TranslationInterface {

  /**
   * {@inheritDoc}
   */
  public function translate($string, array $args = [], array $options = []) {
    return new TranslatableMarkup($string, $args, $options, $this);
  }

  /**
   * {@inheritDoc}
   */
  public function translateString(TranslatableMarkup $translated_string) {
    return $translated_string->getUntranslatedString();
  }

  /**
   * {@inheritDoc}
   */
  public function formatPlural($count, $singular, $plural, array $args = [], array $options = []) {
    return new PluralTranslatableMarkup($count, $singular, $plural, $args, $options, $this);
  }

}
+8 −3
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ use Drupal\Component\Render\FormattableMarkup;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\jsonlog\Logger\JsonLogData;
use Drupal\Tests\UnitTestCase;
use Drupal\Tests\jsonlog\MockTranslation;

/**
 * Unit tests for JsonLogData class
@@ -99,7 +100,7 @@ class JsonLogDataTest extends UnitTestCase {
    $this->data = new JsonLogData('test_site_id', 'test_canonical');
    $this->assertNull($this->data->getMessage(), 'Message empty by default');

    $msg = new TranslatableMarkup('translatable logging item');
    $msg = new TranslatableMarkup('translatable logging item', [], [], new MockTranslation());
    $this->data->setMessage($msg);
    $this->assertEquals('translatable logging item', $this->data->getMessage(), 'By default message gets logged.');
    $this->assertEmpty($this->data->getTrunc(), 'Message not truncated');
@@ -137,7 +138,11 @@ class JsonLogDataTest extends UnitTestCase {
    $this->data = new JsonLogData('test_site_id', 'test_canonical');

    $this->data->setSeverity(3);
    $this->assertEquals(new TranslatableMarkup('Error'), $this->data->getSeverity(), 'LogLevel 3 set to Error.');
    $this->assertEquals(
      new TranslatableMarkup('Error', [], [], new MockTranslation()),
      $this->data->getSeverity(),
      'LogLevel 3 set to Error.'
    );
  }

  public function testChannelWillBeSetAsSubtypeWithMaxLength() {