blob: 83abdcba173b9fbe00be144e7ea1aa89bcc999be [file] [log] [blame]
<?php
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* @category tests
* @package log4php
* @subpackage appenders
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @link http://logging.apache.org/log4php
* @internal Phpmd clean.
*/
@include_once('FirePHPCore/FirePHP.class.php');
/**
* @group appenders
*/
class LoggerAppenderFirePHPTest extends PHPUnit_Framework_TestCase {
private $config = array(
'rootLogger' => array(
'appenders' => array('default'),
),
'appenders' => array(
'default' => array(
'class' => 'LoggerAppenderFirePHP',
'layout' => array(
'class' => 'LoggerLayoutPattern',
),
'params' => array('target' => 'page')
)
)
);
public function setUp() {
if(!method_exists('FirePHP', 'to')) {
self::markTestSkipped("Please install 'FirePHP' in order to run this test");
}
}
private function createEvent($message, $level) {
$eventMock = new LoggerLoggingEvent("LoggerAppenderFirePHPTest", new Logger("TEST"), LoggerLevel::toLevel($level), $message);
return $eventMock;
}
public function testSetTarget() {
$appender = new LoggerAppenderFirePHP();
$appender->setTarget('page');
self::assertSame('page', $appender->getTarget());
}
public function testAppend_HandleDebug() {
$console = new FirePHPSpy();
$appender = new TestableLoggerAppenderFirePhp();
$appender->setConsole($console);
$expectedMessage = 'trace message';
$expectedLevel = 'debug';
$appender->append($this->createEvent($expectedMessage, $expectedLevel));
$this->assertLog($console, $expectedMessage, $expectedLevel, 'log');
}
public function testAppend_HandleWarn() {
$console = new FirePHPSpy();
$appender = new TestableLoggerAppenderFirePhp();
$appender->setConsole($console);
$expectedMessage = 'debug message';
$expectedLevel = 'warn';
$appender->append($this->createEvent($expectedMessage, $expectedLevel));
$this->assertLog($console, $expectedMessage, $expectedLevel, 'warn');
}
public function testAppend_HandleError() {
$console = new FirePHPSpy();
$appender = new TestableLoggerAppenderFirePhp();
$appender->setConsole($console);
$expectedMessage = 'error message';
$expectedLevel = 'error';
$appender->append($this->createEvent($expectedMessage, $expectedLevel));
$this->assertLog($console, $expectedMessage, $expectedLevel, 'error');
}
public function testAppend_HandleFatal() {
$console = new FirePHPSpy();
$appender = new TestableLoggerAppenderFirePhp();
$appender->setConsole($console);
$expectedMessage = "fatal message";
$expectedLevel = 'fatal';
$appender->append($this->createEvent($expectedMessage, $expectedLevel));
$this->assertLog($console, $expectedMessage, $expectedLevel, 'error');
}
public function testAppend_HandleDefault() {
$console = new FirePHPSpy();
$appender = new TestableLoggerAppenderFirePhp();
$appender->setConsole($console);
$expectedMessage = 'info message';
$expectedLevel = 'info';
$appender->append($this->createEvent($expectedMessage, $expectedLevel));
$this->assertLog($console, $expectedMessage, $expectedLevel, 'info');
}
public function assertLog($console, $expectedMessage, $logLevel, $calledMethod) {
$event = $this->createEvent($expectedMessage, $logLevel);
$layout = new LoggerLayoutSimple();
$message = $layout->format($event);
$this->assertEquals($message, $console->getMessage(), 'log message is wrong');
$this->assertEquals(1, $console->getCalls(), 'wasn\'t called once');
$this->assertEquals($calledMethod, $console->getCalledMethod(), 'wrong log-method was called');
}
}
class TestableLoggerAppenderFirePhp extends LoggerAppenderFirePHP {
public function setConsole($console) {
$this->console = $console;
}
}
class FirePHPSpy {
private $calls = 0;
private $message = '';
private $calledMethod = '';
public function getCalls() {
return $this->calls;
}
public function getMessage() {
return $this->message;
}
public function log($message) {
$this->calls++;
$this->calledMethod = 'log';
$this->message = $message;
}
public function debug($message) {
$this->calls++;
$this->calledMethod = 'debug';
$this->message = $message;
}
public function warn($message) {
$this->calls++;
$this->calledMethod = 'warn';
$this->message = $message;
}
public function error($message) {
$this->calls++;
$this->calledMethod = 'error';
$this->message = $message;
}
public function info($message) {
$this->calls++;
$this->calledMethod = 'info';
$this->message = $message;
}
public function getCalledMethod() {
return $this->calledMethod;
}
}