From 18083500616be240cd3d509d2ebe9a9d6f1a9507 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Sun, 20 Feb 2011 22:26:29 +0100 Subject: [PATCH] Added TestHandler --- src/Monolog/Handler/TestHandler.php | 93 +++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 src/Monolog/Handler/TestHandler.php diff --git a/src/Monolog/Handler/TestHandler.php b/src/Monolog/Handler/TestHandler.php new file mode 100644 index 00000000..5b865112 --- /dev/null +++ b/src/Monolog/Handler/TestHandler.php @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; + +/** + * TestHandler is used for testing purposes. + * + * It records all messages and gives you access to them for verification. + * + * @author Jordi Boggiano + */ +class TestHandler extends AbstractHandler +{ + protected $messages; + protected $messagesByLevel; + + public function getMessages() + { + return $this->messages; + } + + public function hasError($message) + { + return $this->hasMessage($message, Logger::ERROR); + } + + public function hasWarning($message) + { + return $this->hasMessage($message, Logger::WARNING); + } + + public function hasInfo($message) + { + return $this->hasMessage($message, Logger::INFO); + } + + public function hasDebug($message) + { + return $this->hasMessage($message, Logger::DEBUG); + } + + public function hasErrors() + { + return isset($this->messagesByLevel[Logger::ERROR]); + } + + public function hasWarnings() + { + return isset($this->messagesByLevel[Logger::WARNING]); + } + + public function hasInfos() + { + return isset($this->messagesByLevel[Logger::INFO]); + } + + public function hasDebugs() + { + return isset($this->messagesByLevel[Logger::DEBUG]); + } + + protected function hasMessage($message, $level = null) + { + if (null === $level) { + $messages = $this->messages; + } else { + $messages = $this->messagesByLevel[$level]; + } + foreach ($messages as $msg) { + if ($msg['message'] === $message) { + return true; + } + } + return false; + } + + public function write($message) + { + $this->messagesByLevel[$message['level']][] = $message; + $this->messages[] = $message; + } +} \ No newline at end of file