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

Move record searching to its own method: hasRecordThatPasses()

Austin Hyde пре 10 година
родитељ
комит
202d3750d6
1 измењених фајлова са 16 додато и 13 уклоњено
  1. 16 13
      src/Monolog/Handler/TestHandler.php

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

@@ -112,21 +112,13 @@ class TestHandler extends AbstractProcessingHandler
 
     protected function hasRecord($record, $level)
     {
-        if (!isset($this->recordsByLevel[$level])) {
-            return false;
-        }
-
         if (is_array($record)) {
             $record = $record['message'];
         }
 
-        foreach ($this->recordsByLevel[$level] as $rec) {
-            if ($rec['message'] === $record) {
-                return true;
-            }
-        }
-
-        return false;
+        return $this->hasRecordThatPasses($level, function($rec) use ($record) {
+            return $rec['message'] === $record;
+        });
     }
 
     public function hasEmergencyThatContains($message)
@@ -171,12 +163,23 @@ class TestHandler extends AbstractProcessingHandler
 
     public function hasRecordThatContains($message, $level)
     {
+        return $this->hasRecordThatPasses($level, function($rec) use ($message) {
+            return strpos($rec['message'], $message) !== false;
+        });
+    }
+
+    public function hasRecordThatPasses($level, $predicate)
+    {
+        if (!is_callable($predicate)) {
+            throw new \InvalidArgumentException("Expected a callable for hasRecordThatSucceeds");
+        }
+
         if (!isset($this->recordsByLevel[$level])) {
             return false;
         }
 
-        foreach ($this->recordsByLevel[$level] as $rec) {
-            if (strpos($rec['message'], $message) !== false) {
+        foreach ($this->recordsByLevel[$level] as $i => $rec) {
+            if (call_user_func($predicate, $rec, $i)) {
                 return true;
             }
         }