-
Notifications
You must be signed in to change notification settings - Fork 439
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Duplicate test classes that were removed starting with psr/log 2.0
- Loading branch information
1 parent
a5b6901
commit 1e54a4a
Showing
3 changed files
with
148 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Google\Cloud\Logging\Tests\Unit; | ||
|
||
final class DummyTest | ||
{ | ||
public function __toString() | ||
{ | ||
return 'DummyTest'; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Google\Cloud\Logging\Tests\Unit; | ||
|
||
|
||
use PHPUnit\Framework\TestCase; | ||
use Psr\Log\LoggerInterface; | ||
use Psr\Log\LogLevel; | ||
|
||
abstract class LoggerInterfaceTest extends TestCase | ||
{ | ||
/** | ||
* @return LoggerInterface | ||
*/ | ||
abstract public function getLogger(); | ||
|
||
/** | ||
* This must return the log messages in order. | ||
* | ||
* The simple formatting of the messages is: "<LOG LEVEL> <MESSAGE>". | ||
* | ||
* Example ->error('Foo') would yield "error Foo". | ||
* | ||
* @return string[] | ||
*/ | ||
abstract public 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() | ||
{ | ||
if (method_exists($this, 'createPartialMock')) { | ||
$dummy = $this->createPartialMock('Psr\Log\Test\DummyTest', array('__toString')); | ||
} else { | ||
$dummy = $this->getMock('Psr\Log\Test\DummyTest', array('__toString')); | ||
} | ||
$dummy->expects($this->once()) | ||
->method('__toString') | ||
->will($this->returnValue('DUMMY')); | ||
|
||
$this->getLogger()->warning($dummy); | ||
|
||
$expected = array('warning DUMMY'); | ||
$this->assertEquals($expected, $this->getLogs()); | ||
} | ||
|
||
public function testContextCanContainAnything() | ||
{ | ||
$closed = fopen('php://memory', 'r'); | ||
fclose($closed); | ||
|
||
$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'), | ||
'closed' => $closed, | ||
); | ||
|
||
$this->getLogger()->warning('Crazy context data', $context); | ||
|
||
$expected = array('warning Crazy context data'); | ||
$this->assertEquals($expected, $this->getLogs()); | ||
} | ||
|
||
public function testContextExceptionKeyCanBeExceptionOrOtherValues() | ||
{ | ||
$logger = $this->getLogger(); | ||
$logger->warning('Random message', array('exception' => 'oops')); | ||
$logger->critical('Uncaught Exception!', array('exception' => new \LogicException('Fail'))); | ||
|
||
$expected = array( | ||
'warning Random message', | ||
'critical Uncaught Exception!' | ||
); | ||
$this->assertEquals($expected, $this->getLogs()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters