scratch – Blame information for rev 115

Subversion Repositories:
Rev:
Rev Author Line No. Line
115 office 1 <?php
2  
3 /*
4 * This file is part of the Monolog package.
5 *
6 * (c) Jordi Boggiano <j.boggiano@seld.be>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11  
12 namespace Monolog\Handler;
13  
14 use Monolog\Logger;
15 use Monolog\TestCase;
16  
17 class FilterHandlerTest extends TestCase
18 {
19 /**
20 * @covers Monolog\Handler\FilterHandler::isHandling
21 */
22 public function testIsHandling()
23 {
24 $test = new TestHandler();
25 $handler = new FilterHandler($test, Logger::INFO, Logger::NOTICE);
26 $this->assertFalse($handler->isHandling($this->getRecord(Logger::DEBUG)));
27 $this->assertTrue($handler->isHandling($this->getRecord(Logger::INFO)));
28 $this->assertTrue($handler->isHandling($this->getRecord(Logger::NOTICE)));
29 $this->assertFalse($handler->isHandling($this->getRecord(Logger::WARNING)));
30 $this->assertFalse($handler->isHandling($this->getRecord(Logger::ERROR)));
31 $this->assertFalse($handler->isHandling($this->getRecord(Logger::CRITICAL)));
32 $this->assertFalse($handler->isHandling($this->getRecord(Logger::ALERT)));
33 $this->assertFalse($handler->isHandling($this->getRecord(Logger::EMERGENCY)));
34 }
35  
36 /**
37 * @covers Monolog\Handler\FilterHandler::handle
38 * @covers Monolog\Handler\FilterHandler::setAcceptedLevels
39 * @covers Monolog\Handler\FilterHandler::isHandling
40 */
41 public function testHandleProcessOnlyNeededLevels()
42 {
43 $test = new TestHandler();
44 $handler = new FilterHandler($test, Logger::INFO, Logger::NOTICE);
45  
46 $handler->handle($this->getRecord(Logger::DEBUG));
47 $this->assertFalse($test->hasDebugRecords());
48  
49 $handler->handle($this->getRecord(Logger::INFO));
50 $this->assertTrue($test->hasInfoRecords());
51 $handler->handle($this->getRecord(Logger::NOTICE));
52 $this->assertTrue($test->hasNoticeRecords());
53  
54 $handler->handle($this->getRecord(Logger::WARNING));
55 $this->assertFalse($test->hasWarningRecords());
56 $handler->handle($this->getRecord(Logger::ERROR));
57 $this->assertFalse($test->hasErrorRecords());
58 $handler->handle($this->getRecord(Logger::CRITICAL));
59 $this->assertFalse($test->hasCriticalRecords());
60 $handler->handle($this->getRecord(Logger::ALERT));
61 $this->assertFalse($test->hasAlertRecords());
62 $handler->handle($this->getRecord(Logger::EMERGENCY));
63 $this->assertFalse($test->hasEmergencyRecords());
64  
65 $test = new TestHandler();
66 $handler = new FilterHandler($test, array(Logger::INFO, Logger::ERROR));
67  
68 $handler->handle($this->getRecord(Logger::DEBUG));
69 $this->assertFalse($test->hasDebugRecords());
70 $handler->handle($this->getRecord(Logger::INFO));
71 $this->assertTrue($test->hasInfoRecords());
72 $handler->handle($this->getRecord(Logger::NOTICE));
73 $this->assertFalse($test->hasNoticeRecords());
74 $handler->handle($this->getRecord(Logger::ERROR));
75 $this->assertTrue($test->hasErrorRecords());
76 $handler->handle($this->getRecord(Logger::CRITICAL));
77 $this->assertFalse($test->hasCriticalRecords());
78 }
79  
80 /**
81 * @covers Monolog\Handler\FilterHandler::setAcceptedLevels
82 * @covers Monolog\Handler\FilterHandler::getAcceptedLevels
83 */
84 public function testAcceptedLevelApi()
85 {
86 $test = new TestHandler();
87 $handler = new FilterHandler($test);
88  
89 $levels = array(Logger::INFO, Logger::ERROR);
90 $handler->setAcceptedLevels($levels);
91 $this->assertSame($levels, $handler->getAcceptedLevels());
92  
93 $handler->setAcceptedLevels(array('info', 'error'));
94 $this->assertSame($levels, $handler->getAcceptedLevels());
95  
96 $levels = array(Logger::CRITICAL, Logger::ALERT, Logger::EMERGENCY);
97 $handler->setAcceptedLevels(Logger::CRITICAL, Logger::EMERGENCY);
98 $this->assertSame($levels, $handler->getAcceptedLevels());
99  
100 $handler->setAcceptedLevels('critical', 'emergency');
101 $this->assertSame($levels, $handler->getAcceptedLevels());
102 }
103  
104 /**
105 * @covers Monolog\Handler\FilterHandler::handle
106 */
107 public function testHandleUsesProcessors()
108 {
109 $test = new TestHandler();
110 $handler = new FilterHandler($test, Logger::DEBUG, Logger::EMERGENCY);
111 $handler->pushProcessor(
112 function ($record) {
113 $record['extra']['foo'] = true;
114  
115 return $record;
116 }
117 );
118 $handler->handle($this->getRecord(Logger::WARNING));
119 $this->assertTrue($test->hasWarningRecords());
120 $records = $test->getRecords();
121 $this->assertTrue($records[0]['extra']['foo']);
122 }
123  
124 /**
125 * @covers Monolog\Handler\FilterHandler::handle
126 */
127 public function testHandleRespectsBubble()
128 {
129 $test = new TestHandler();
130  
131 $handler = new FilterHandler($test, Logger::INFO, Logger::NOTICE, false);
132 $this->assertTrue($handler->handle($this->getRecord(Logger::INFO)));
133 $this->assertFalse($handler->handle($this->getRecord(Logger::WARNING)));
134  
135 $handler = new FilterHandler($test, Logger::INFO, Logger::NOTICE, true);
136 $this->assertFalse($handler->handle($this->getRecord(Logger::INFO)));
137 $this->assertFalse($handler->handle($this->getRecord(Logger::WARNING)));
138 }
139  
140 /**
141 * @covers Monolog\Handler\FilterHandler::handle
142 */
143 public function testHandleWithCallback()
144 {
145 $test = new TestHandler();
146 $handler = new FilterHandler(
147 function ($record, $handler) use ($test) {
148 return $test;
149 }, Logger::INFO, Logger::NOTICE, false
150 );
151 $handler->handle($this->getRecord(Logger::DEBUG));
152 $handler->handle($this->getRecord(Logger::INFO));
153 $this->assertFalse($test->hasDebugRecords());
154 $this->assertTrue($test->hasInfoRecords());
155 }
156  
157 /**
158 * @covers Monolog\Handler\FilterHandler::handle
159 * @expectedException \RuntimeException
160 */
161 public function testHandleWithBadCallbackThrowsException()
162 {
163 $handler = new FilterHandler(
164 function ($record, $handler) {
165 return 'foo';
166 }
167 );
168 $handler->handle($this->getRecord(Logger::WARNING));
169 }
170 }