LogMessageParserTest.php
Same filename in other branches
Namespace
Drupal\Tests\Core\LoggerFile
-
core/
tests/ Drupal/ Tests/ Core/ Logger/ LogMessageParserTest.php
View source
<?php
namespace Drupal\Tests\Core\Logger;
use Drupal\Core\Logger\LogMessageParser;
use Drupal\Tests\UnitTestCase;
/**
* @coversDefaultClass \Drupal\Core\Logger\LogMessageParser
* @group Logger
*/
class LogMessageParserTest extends UnitTestCase {
/**
* Tests for LogMessageParserTrait::parseMessagePlaceholders()
*
* @param array $value
* An array containing:
* - message: A string that contains a message with placeholders.
* - context: An array with placeholder values.
* @param array $expected
* An array with the expected values after the test has run.
* - message: The expected parsed message.
* - context: The expected values of the placeholders.
*
* @dataProvider providerTestParseMessagePlaceholders
* @covers ::parseMessagePlaceholders
*/
public function testParseMessagePlaceholders(array $value, array $expected) {
$parser = new LogMessageParser();
$message_placeholders = $parser->parseMessagePlaceholders($value['message'], $value['context']);
$this->assertEquals($expected['message'], $value['message']);
$this->assertEquals($expected['context'], $message_placeholders);
}
/**
* Data provider for testParseMessagePlaceholders().
*/
public function providerTestParseMessagePlaceholders() {
return [
// PSR3 only message.
[
[
'message' => 'User {username} created',
'context' => [
'username' => 'Dries',
],
],
[
'message' => 'User @username created',
'context' => [
'@username' => 'Dries',
],
],
],
// PSR3 style mixed in a format_string style message.
[
[
'message' => 'User {username} created @time',
'context' => [
'username' => 'Dries',
'@time' => 'now',
],
],
[
'message' => 'User @username created @time',
'context' => [
'@username' => 'Dries',
'@time' => 'now',
],
],
],
// format_string style message only.
[
[
'message' => 'User @username created',
'context' => [
'@username' => 'Dries',
],
],
[
'message' => 'User @username created',
'context' => [
'@username' => 'Dries',
],
],
],
// Message without placeholders but wildcard characters.
[
[
'message' => 'User W-\\};~{&! created @',
'context' => [
'' => '',
],
],
[
'message' => 'User W-\\};~{&! created @',
'context' => [],
],
],
// Message with double PSR3 style messages.
[
[
'message' => 'Test {with} two {{encapsuled}} strings',
'context' => [
'with' => 'together',
'encapsuled' => 'awesome',
],
],
[
'message' => 'Test @with two {@encapsuled} strings',
'context' => [
'@with' => 'together',
'@encapsuled' => 'awesome',
],
],
],
// Test removal of unexpected placeholders like ! while allowed
// placeholders beginning with @, % and : are preserved.
[
[
'message' => 'Test placeholder with :url and old !bang parameter',
'context' => [
':url' => 'https://drupal.org',
'!bang' => 'foo bar',
],
],
[
'message' => 'Test placeholder with :url and old !bang parameter',
'context' => [
':url' => 'https://drupal.org',
],
],
],
];
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
LogMessageParserTest | @coversDefaultClass \Drupal\Core\Logger\LogMessageParser @group Logger |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.