PageRenderTime 27ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/vendor/monolog/monolog/tests/Monolog/Handler/FingersCrossedHandlerTest.php

https://gitlab.com/techniconline/kmc
PHP | 255 lines | 174 code | 19 blank | 62 comment | 0 complexity | 2774dfab5198536c1ba6188cf00190e8 MD5 | raw file
  1. <?php
  2. /*
  3. * This file is part of the Monolog package.
  4. *
  5. * (c) Jordi Boggiano <j.boggiano@seld.be>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Monolog\Handler;
  11. use Monolog\TestCase;
  12. use Monolog\Logger;
  13. use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy;
  14. use Monolog\Handler\FingersCrossed\ChannelLevelActivationStrategy;
  15. use Psr\Log\LogLevel;
  16. class FingersCrossedHandlerTest extends TestCase
  17. {
  18. /**
  19. * @covers Monolog\Handler\FingersCrossedHandler::__construct
  20. * @covers Monolog\Handler\FingersCrossedHandler::handle
  21. */
  22. public function testHandleBuffers()
  23. {
  24. $test = new TestHandler();
  25. $handler = new FingersCrossedHandler($test);
  26. $handler->handle($this->getRecord(Logger::DEBUG));
  27. $handler->handle($this->getRecord(Logger::INFO));
  28. $this->assertFalse($test->hasDebugRecords());
  29. $this->assertFalse($test->hasInfoRecords());
  30. $handler->handle($this->getRecord(Logger::WARNING));
  31. $handler->close();
  32. $this->assertTrue($test->hasInfoRecords());
  33. $this->assertTrue(count($test->getRecords()) === 3);
  34. }
  35. /**
  36. * @covers Monolog\Handler\FingersCrossedHandler::handle
  37. */
  38. public function testHandleStopsBufferingAfterTrigger()
  39. {
  40. $test = new TestHandler();
  41. $handler = new FingersCrossedHandler($test);
  42. $handler->handle($this->getRecord(Logger::WARNING));
  43. $handler->handle($this->getRecord(Logger::DEBUG));
  44. $handler->close();
  45. $this->assertTrue($test->hasWarningRecords());
  46. $this->assertTrue($test->hasDebugRecords());
  47. }
  48. /**
  49. * @covers Monolog\Handler\FingersCrossedHandler::handle
  50. * @covers Monolog\Handler\FingersCrossedHandler::reset
  51. */
  52. public function testHandleRestartBufferingAfterReset()
  53. {
  54. $test = new TestHandler();
  55. $handler = new FingersCrossedHandler($test);
  56. $handler->handle($this->getRecord(Logger::WARNING));
  57. $handler->handle($this->getRecord(Logger::DEBUG));
  58. $handler->reset();
  59. $handler->handle($this->getRecord(Logger::INFO));
  60. $handler->close();
  61. $this->assertTrue($test->hasWarningRecords());
  62. $this->assertTrue($test->hasDebugRecords());
  63. $this->assertFalse($test->hasInfoRecords());
  64. }
  65. /**
  66. * @covers Monolog\Handler\FingersCrossedHandler::handle
  67. */
  68. public function testHandleRestartBufferingAfterBeingTriggeredWhenStopBufferingIsDisabled()
  69. {
  70. $test = new TestHandler();
  71. $handler = new FingersCrossedHandler($test, Logger::WARNING, 0, false, false);
  72. $handler->handle($this->getRecord(Logger::DEBUG));
  73. $handler->handle($this->getRecord(Logger::WARNING));
  74. $handler->handle($this->getRecord(Logger::INFO));
  75. $handler->close();
  76. $this->assertTrue($test->hasWarningRecords());
  77. $this->assertTrue($test->hasDebugRecords());
  78. $this->assertFalse($test->hasInfoRecords());
  79. }
  80. /**
  81. * @covers Monolog\Handler\FingersCrossedHandler::handle
  82. */
  83. public function testHandleBufferLimit()
  84. {
  85. $test = new TestHandler();
  86. $handler = new FingersCrossedHandler($test, Logger::WARNING, 2);
  87. $handler->handle($this->getRecord(Logger::DEBUG));
  88. $handler->handle($this->getRecord(Logger::DEBUG));
  89. $handler->handle($this->getRecord(Logger::INFO));
  90. $handler->handle($this->getRecord(Logger::WARNING));
  91. $this->assertTrue($test->hasWarningRecords());
  92. $this->assertTrue($test->hasInfoRecords());
  93. $this->assertFalse($test->hasDebugRecords());
  94. }
  95. /**
  96. * @covers Monolog\Handler\FingersCrossedHandler::handle
  97. */
  98. public function testHandleWithCallback()
  99. {
  100. $test = new TestHandler();
  101. $handler = new FingersCrossedHandler(function ($record, $handler) use ($test) {
  102. return $test;
  103. });
  104. $handler->handle($this->getRecord(Logger::DEBUG));
  105. $handler->handle($this->getRecord(Logger::INFO));
  106. $this->assertFalse($test->hasDebugRecords());
  107. $this->assertFalse($test->hasInfoRecords());
  108. $handler->handle($this->getRecord(Logger::WARNING));
  109. $this->assertTrue($test->hasInfoRecords());
  110. $this->assertTrue(count($test->getRecords()) === 3);
  111. }
  112. /**
  113. * @covers Monolog\Handler\FingersCrossedHandler::handle
  114. * @expectedException RuntimeException
  115. */
  116. public function testHandleWithBadCallbackThrowsException()
  117. {
  118. $handler = new FingersCrossedHandler(function ($record, $handler) {
  119. return 'foo';
  120. });
  121. $handler->handle($this->getRecord(Logger::WARNING));
  122. }
  123. /**
  124. * @covers Monolog\Handler\FingersCrossedHandler::isHandling
  125. */
  126. public function testIsHandlingAlways()
  127. {
  128. $test = new TestHandler();
  129. $handler = new FingersCrossedHandler($test, Logger::ERROR);
  130. $this->assertTrue($handler->isHandling($this->getRecord(Logger::DEBUG)));
  131. }
  132. /**
  133. * @covers Monolog\Handler\FingersCrossedHandler::__construct
  134. * @covers Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy::__construct
  135. * @covers Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy::isHandlerActivated
  136. */
  137. public function testErrorLevelActivationStrategy()
  138. {
  139. $test = new TestHandler();
  140. $handler = new FingersCrossedHandler($test, new ErrorLevelActivationStrategy(Logger::WARNING));
  141. $handler->handle($this->getRecord(Logger::DEBUG));
  142. $this->assertFalse($test->hasDebugRecords());
  143. $handler->handle($this->getRecord(Logger::WARNING));
  144. $this->assertTrue($test->hasDebugRecords());
  145. $this->assertTrue($test->hasWarningRecords());
  146. }
  147. /**
  148. * @covers Monolog\Handler\FingersCrossedHandler::__construct
  149. * @covers Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy::__construct
  150. * @covers Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy::isHandlerActivated
  151. */
  152. public function testErrorLevelActivationStrategyWithPsrLevel()
  153. {
  154. $test = new TestHandler();
  155. $handler = new FingersCrossedHandler($test, new ErrorLevelActivationStrategy('warning'));
  156. $handler->handle($this->getRecord(Logger::DEBUG));
  157. $this->assertFalse($test->hasDebugRecords());
  158. $handler->handle($this->getRecord(Logger::WARNING));
  159. $this->assertTrue($test->hasDebugRecords());
  160. $this->assertTrue($test->hasWarningRecords());
  161. }
  162. /**
  163. * @covers Monolog\Handler\FingersCrossed\ChannelLevelActivationStrategy::__construct
  164. * @covers Monolog\Handler\FingersCrossed\ChannelLevelActivationStrategy::isHandlerActivated
  165. */
  166. public function testChannelLevelActivationStrategy()
  167. {
  168. $test = new TestHandler();
  169. $handler = new FingersCrossedHandler($test, new ChannelLevelActivationStrategy(Logger::ERROR, array('othertest' => Logger::DEBUG)));
  170. $handler->handle($this->getRecord(Logger::WARNING));
  171. $this->assertFalse($test->hasWarningRecords());
  172. $record = $this->getRecord(Logger::DEBUG);
  173. $record['channel'] = 'othertest';
  174. $handler->handle($record);
  175. $this->assertTrue($test->hasDebugRecords());
  176. $this->assertTrue($test->hasWarningRecords());
  177. }
  178. /**
  179. * @covers Monolog\Handler\FingersCrossed\ChannelLevelActivationStrategy::__construct
  180. * @covers Monolog\Handler\FingersCrossed\ChannelLevelActivationStrategy::isHandlerActivated
  181. */
  182. public function testChannelLevelActivationStrategyWithPsrLevels()
  183. {
  184. $test = new TestHandler();
  185. $handler = new FingersCrossedHandler($test, new ChannelLevelActivationStrategy('error', array('othertest' => 'debug')));
  186. $handler->handle($this->getRecord(Logger::WARNING));
  187. $this->assertFalse($test->hasWarningRecords());
  188. $record = $this->getRecord(Logger::DEBUG);
  189. $record['channel'] = 'othertest';
  190. $handler->handle($record);
  191. $this->assertTrue($test->hasDebugRecords());
  192. $this->assertTrue($test->hasWarningRecords());
  193. }
  194. /**
  195. * @covers Monolog\Handler\FingersCrossedHandler::handle
  196. */
  197. public function testHandleUsesProcessors()
  198. {
  199. $test = new TestHandler();
  200. $handler = new FingersCrossedHandler($test, Logger::INFO);
  201. $handler->pushProcessor(function ($record) {
  202. $record['extra']['foo'] = true;
  203. return $record;
  204. });
  205. $handler->handle($this->getRecord(Logger::WARNING));
  206. $this->assertTrue($test->hasWarningRecords());
  207. $records = $test->getRecords();
  208. $this->assertTrue($records[0]['extra']['foo']);
  209. }
  210. /**
  211. * @covers Monolog\Handler\FingersCrossedHandler::close
  212. */
  213. public function testPassthruOnClose()
  214. {
  215. $test = new TestHandler();
  216. $handler = new FingersCrossedHandler($test, new ErrorLevelActivationStrategy(Logger::WARNING), 0, true, true, Logger::INFO);
  217. $handler->handle($this->getRecord(Logger::DEBUG));
  218. $handler->handle($this->getRecord(Logger::INFO));
  219. $handler->close();
  220. $this->assertFalse($test->hasDebugRecords());
  221. $this->assertTrue($test->hasInfoRecords());
  222. }
  223. /**
  224. * @covers Monolog\Handler\FingersCrossedHandler::close
  225. */
  226. public function testPsrLevelPassthruOnClose()
  227. {
  228. $test = new TestHandler();
  229. $handler = new FingersCrossedHandler($test, new ErrorLevelActivationStrategy(Logger::WARNING), 0, true, true, LogLevel::INFO);
  230. $handler->handle($this->getRecord(Logger::DEBUG));
  231. $handler->handle($this->getRecord(Logger::INFO));
  232. $handler->close();
  233. $this->assertFalse($test->hasDebugRecords());
  234. $this->assertTrue($test->hasInfoRecords());
  235. }
  236. }