Преглед изворни кода

Make TestHandler::hasRecord assert context, not only message

Petter Blomberg пре 7 година
родитељ
комит
b381a973bc
2 измењених фајлова са 59 додато и 5 уклоњено
  1. 13 5
      src/Monolog/Handler/TestHandler.php
  2. 46 0
      tests/Monolog/Handler/TestHandlerTest.php

+ 13 - 5
src/Monolog/Handler/TestHandler.php

@@ -86,12 +86,20 @@ class TestHandler extends AbstractProcessingHandler
 
     public function hasRecord($record, $level)
     {
-        if (is_array($record)) {
-            $record = $record['message'];
-        }
-
         return $this->hasRecordThatPasses(function ($rec) use ($record) {
-            return $rec['message'] === $record;
+            if (is_array($record)) {
+                if ($rec['message'] !== $record['message']) {
+                    return false;
+                }
+                if ($rec['context'] !== $record['context']) {
+                    return false;
+                }
+            } else {
+                if ($rec['message'] !== $record) {
+                    return false;
+                }
+            }
+            return true;
         }, $level);
     }
 

+ 46 - 0
tests/Monolog/Handler/TestHandlerTest.php

@@ -54,6 +54,52 @@ class TestHandlerTest extends TestCase
         $this->assertEquals(array($record), $records);
     }
 
+    public function testHandlerAssertEmptyContext() {
+        $handler = new TestHandler;
+        $record  = $this->getRecord(Logger::WARNING, 'test', []);
+        $this->assertFalse($handler->hasWarning([
+            'message' => 'test',
+            'context' => [],
+        ]));
+
+        $handler->handle($record);
+
+        $this->assertTrue($handler->hasWarning([
+            'message' => 'test',
+            'context' => [],
+        ]));
+        $this->assertFalse($handler->hasWarning([
+            'message' => 'test',
+            'context' => [
+                'foo' => 'bar'
+            ],
+        ]));
+    }
+
+    public function testHandlerAssertNonEmptyContext() {
+        $handler = new TestHandler;
+        $record  = $this->getRecord(Logger::WARNING, 'test', ['foo' => 'bar']);
+        $this->assertFalse($handler->hasWarning([
+            'message' => 'test',
+            'context' => [
+                'foo' => 'bar'
+            ],
+        ]));
+
+        $handler->handle($record);
+
+        $this->assertTrue($handler->hasWarning([
+            'message' => 'test',
+            'context' => [
+                'foo' => 'bar'
+            ],
+        ]));
+        $this->assertFalse($handler->hasWarning([
+            'message' => 'test',
+            'context' => [],
+        ]));
+    }
+
     public function methodProvider()
     {
         return array(