abstract class LoggerInterfaceTest in Service Container 7
Same name and namespace in other branches
- 7.2 lib/Psr/Log/Test/LoggerInterfaceTest.php \Psr\Log\Test\LoggerInterfaceTest
Provides a base test class for ensuring compliance with the LoggerInterface
Implementors can extend the class and implement abstract methods to run this as part of their test suite
Hierarchy
- class \Psr\Log\Test\LoggerInterfaceTest extends \Psr\Log\Test\PHPUnit_Framework_TestCase
Expanded class hierarchy of LoggerInterfaceTest
File
- lib/
Psr/ Log/ Test/ LoggerInterfaceTest.php, line 12
Namespace
Psr\Log\TestView source
abstract class LoggerInterfaceTest extends \PHPUnit_Framework_TestCase {
/**
* @return LoggerInterface
*/
abstract function getLogger();
/**
* This must return the log messages in order with a simple formatting: "<LOG LEVEL> <MESSAGE>"
*
* Example ->error('Foo') would yield "error Foo"
*
* @return string[]
*/
abstract function getLogs();
public function testImplements() {
$this
->assertInstanceOf('Psr\\Log\\LoggerInterface', $this
->getLogger());
}
/**
* @dataProvider provideLevelsAndMessages
*/
public function testLogsAtAllLevels($level, $message) {
$logger = $this
->getLogger();
$logger
->{$level}($message, array(
'user' => 'Bob',
));
$logger
->log($level, $message, array(
'user' => 'Bob',
));
$expected = array(
$level . ' message of level ' . $level . ' with context: Bob',
$level . ' message of level ' . $level . ' with context: Bob',
);
$this
->assertEquals($expected, $this
->getLogs());
}
public function provideLevelsAndMessages() {
return array(
LogLevel::EMERGENCY => array(
LogLevel::EMERGENCY,
'message of level emergency with context: {user}',
),
LogLevel::ALERT => array(
LogLevel::ALERT,
'message of level alert with context: {user}',
),
LogLevel::CRITICAL => array(
LogLevel::CRITICAL,
'message of level critical with context: {user}',
),
LogLevel::ERROR => array(
LogLevel::ERROR,
'message of level error with context: {user}',
),
LogLevel::WARNING => array(
LogLevel::WARNING,
'message of level warning with context: {user}',
),
LogLevel::NOTICE => array(
LogLevel::NOTICE,
'message of level notice with context: {user}',
),
LogLevel::INFO => array(
LogLevel::INFO,
'message of level info with context: {user}',
),
LogLevel::DEBUG => array(
LogLevel::DEBUG,
'message of level debug with context: {user}',
),
);
}
/**
* @expectedException Psr\Log\InvalidArgumentException
*/
public function testThrowsOnInvalidLevel() {
$logger = $this
->getLogger();
$logger
->log('invalid level', 'Foo');
}
public function testContextReplacement() {
$logger = $this
->getLogger();
$logger
->info('{Message {nothing} {user} {foo.bar} a}', array(
'user' => 'Bob',
'foo.bar' => 'Bar',
));
$expected = array(
'info {Message {nothing} Bob Bar a}',
);
$this
->assertEquals($expected, $this
->getLogs());
}
public function testObjectCastToString() {
$dummy = $this
->getMock('Psr\\Log\\Test\\DummyTest', array(
'__toString',
));
$dummy
->expects($this
->once())
->method('__toString')
->will($this
->returnValue('DUMMY'));
$this
->getLogger()
->warning($dummy);
}
public function testContextCanContainAnything() {
$context = array(
'bool' => true,
'null' => null,
'string' => 'Foo',
'int' => 0,
'float' => 0.5,
'nested' => array(
'with object' => new DummyTest(),
),
'object' => new \DateTime(),
'resource' => fopen('php://memory', 'r'),
);
$this
->getLogger()
->warning('Crazy context data', $context);
}
public function testContextExceptionKeyCanBeExceptionOrOtherValues() {
$this
->getLogger()
->warning('Random message', array(
'exception' => 'oops',
));
$this
->getLogger()
->critical('Uncaught Exception!', array(
'exception' => new \LogicException('Fail'),
));
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
LoggerInterfaceTest:: |
abstract | function | ||
LoggerInterfaceTest:: |
abstract | function | This must return the log messages in order with a simple formatting: "<LOG LEVEL> <MESSAGE>" | |
LoggerInterfaceTest:: |
public | function | ||
LoggerInterfaceTest:: |
public | function | ||
LoggerInterfaceTest:: |
public | function | ||
LoggerInterfaceTest:: |
public | function | ||
LoggerInterfaceTest:: |
public | function | ||
LoggerInterfaceTest:: |
public | function | @dataProvider provideLevelsAndMessages | |
LoggerInterfaceTest:: |
public | function | ||
LoggerInterfaceTest:: |
public | function | @expectedException Psr\Log\InvalidArgumentException |