Version 1
[yaffs-website] / web / core / tests / Drupal / Tests / Core / Logger / LogMessageParserTest.php
diff --git a/web/core/tests/Drupal/Tests/Core/Logger/LogMessageParserTest.php b/web/core/tests/Drupal/Tests/Core/Logger/LogMessageParserTest.php
new file mode 100644 (file)
index 0000000..395517f
--- /dev/null
@@ -0,0 +1,69 @@
+<?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 {
+
+  /**
+   * Test 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']],
+      ],
+    ];
+  }
+
+}