diff --git a/src/Monolog/Handler/TestHandler.php b/src/Monolog/Handler/TestHandler.php index 80b7f283..f431db94 100644 --- a/src/Monolog/Handler/TestHandler.php +++ b/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; } }