mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-08-27 21:15:40 +02:00
Using late static binding makes it possible to override SS_Log to create logs which are separate to the main Silverstripe log but still use the built in functionality. Add test for SS_Log subclassing.
76 lines
2.3 KiB
PHP
76 lines
2.3 KiB
PHP
<?php
|
|
/**
|
|
* @package framework
|
|
* @subpackage tests
|
|
*/
|
|
class SS_LogTest extends SapphireTest {
|
|
|
|
protected $testEmailWriter;
|
|
|
|
public function setUp() {
|
|
parent::setUp();
|
|
|
|
SS_Log::clear_writers();
|
|
}
|
|
|
|
public function tearDown() {
|
|
parent::tearDown();
|
|
|
|
SS_Log::clear_writers();
|
|
}
|
|
|
|
public function testExistingWriter() {
|
|
$testEmailWriter = new SS_LogEmailWriter('test@test.com');
|
|
$testFileWriter = new SS_LogFileWriter('../test.log');
|
|
SS_Log::add_writer($testEmailWriter, SS_Log::ERR);
|
|
SS_Log::add_writer($testFileWriter, SS_Log::WARN);
|
|
|
|
$writers = SS_Log::get_writers();
|
|
$this->assertEquals(2, count($writers));
|
|
}
|
|
|
|
public function testRemoveWriter() {
|
|
$testEmailWriter = new SS_LogEmailWriter('test@test.com');
|
|
$testFileWriter = new SS_LogFileWriter('../test.log');
|
|
SS_Log::add_writer($testEmailWriter, SS_Log::ERR);
|
|
SS_Log::add_writer($testFileWriter, SS_Log::WARN);
|
|
|
|
SS_Log::remove_writer($testEmailWriter);
|
|
$writers = SS_Log::get_writers();
|
|
|
|
$this->assertEquals(1, count($writers));
|
|
|
|
SS_Log::remove_writer($testFileWriter);
|
|
$writers = SS_Log::get_writers();
|
|
$this->assertEquals(0, count($writers));
|
|
}
|
|
|
|
public function testEmailWriter() {
|
|
$testEmailWriter = new SS_LogEmailWriter('test@test.com');
|
|
SS_Log::add_writer($testEmailWriter, SS_Log::ERR);
|
|
|
|
SS_Log::log('Email test', SS_LOG::ERR, array('my-string' => 'test', 'my-array' => array('one' => 1)));
|
|
$this->assertEmailSent('test@test.com');
|
|
$email = $this->findEmail('test@test.com');
|
|
$parser = new CSSContentParser($email['htmlContent']);
|
|
$extras = $parser->getBySelector('table.extras');
|
|
$extraRows = $extras[0]->tr;
|
|
$this->assertContains('my-string', $extraRows[count($extraRows)-2]->td[0]->asXML(), 'Contains extra data key');
|
|
$this->assertContains('test', $extraRows[count($extraRows)-2]->td[1]->asXML(), 'Contains extra data value');
|
|
$this->assertContains('my-array', $extraRows[count($extraRows)-1]->td[0]->asXML(), 'Contains extra data key');
|
|
$this->assertContains(
|
|
"array('one'=>1,)",
|
|
str_replace(array("\r", "\n", " "), '', $extraRows[count($extraRows)-1]->td[1]->asXML()),
|
|
'Serializes arrays correctly'
|
|
);
|
|
}
|
|
|
|
public function testSubclassedLogger() {
|
|
$this->assertTrue(SS_Log::get_logger() !== SS_LogTest_NewLogger::get_logger());
|
|
}
|
|
|
|
}
|
|
|
|
class SS_LogTest_NewLogger extends SS_Log {
|
|
protected static $logger;
|
|
} |