RegistryTest.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php declare(strict_types=1);
  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;
  11. class RegistryTest extends \PHPUnit\Framework\TestCase
  12. {
  13. protected function setUp(): void
  14. {
  15. Registry::clear();
  16. }
  17. /**
  18. * @dataProvider hasLoggerProvider
  19. * @covers Monolog\Registry::hasLogger
  20. */
  21. public function testHasLogger(array $loggersToAdd, array $loggersToCheck, array $expectedResult)
  22. {
  23. foreach ($loggersToAdd as $loggerToAdd) {
  24. Registry::addLogger($loggerToAdd);
  25. }
  26. foreach ($loggersToCheck as $index => $loggerToCheck) {
  27. $this->assertSame($expectedResult[$index], Registry::hasLogger($loggerToCheck));
  28. }
  29. }
  30. public function hasLoggerProvider()
  31. {
  32. $logger1 = new Logger('test1');
  33. $logger2 = new Logger('test2');
  34. $logger3 = new Logger('test3');
  35. return [
  36. // only instances
  37. [
  38. [$logger1],
  39. [$logger1, $logger2],
  40. [true, false],
  41. ],
  42. // only names
  43. [
  44. [$logger1],
  45. ['test1', 'test2'],
  46. [true, false],
  47. ],
  48. // mixed case
  49. [
  50. [$logger1, $logger2],
  51. ['test1', $logger2, 'test3', $logger3],
  52. [true, true, false, false],
  53. ],
  54. ];
  55. }
  56. /**
  57. * @covers Monolog\Registry::clear
  58. */
  59. public function testClearClears()
  60. {
  61. Registry::addLogger(new Logger('test1'), 'log');
  62. Registry::clear();
  63. $this->expectException('\InvalidArgumentException');
  64. Registry::getInstance('log');
  65. }
  66. /**
  67. * @dataProvider removedLoggerProvider
  68. * @covers Monolog\Registry::addLogger
  69. * @covers Monolog\Registry::removeLogger
  70. */
  71. public function testRemovesLogger($loggerToAdd, $remove)
  72. {
  73. Registry::addLogger($loggerToAdd);
  74. Registry::removeLogger($remove);
  75. $this->expectException('\InvalidArgumentException');
  76. Registry::getInstance($loggerToAdd->getName());
  77. }
  78. public function removedLoggerProvider()
  79. {
  80. $logger1 = new Logger('test1');
  81. return [
  82. [$logger1, $logger1],
  83. [$logger1, 'test1'],
  84. ];
  85. }
  86. /**
  87. * @covers Monolog\Registry::addLogger
  88. * @covers Monolog\Registry::getInstance
  89. * @covers Monolog\Registry::__callStatic
  90. */
  91. public function testGetsSameLogger()
  92. {
  93. $logger1 = new Logger('test1');
  94. $logger2 = new Logger('test2');
  95. Registry::addLogger($logger1, 'test1');
  96. Registry::addLogger($logger2);
  97. $this->assertSame($logger1, Registry::getInstance('test1'));
  98. $this->assertSame($logger2, Registry::test2());
  99. }
  100. /**
  101. * @covers Monolog\Registry::getInstance
  102. */
  103. public function testFailsOnNonExistentLogger()
  104. {
  105. $this->expectException(\InvalidArgumentException::class);
  106. Registry::getInstance('test1');
  107. }
  108. /**
  109. * @covers Monolog\Registry::addLogger
  110. */
  111. public function testReplacesLogger()
  112. {
  113. $log1 = new Logger('test1');
  114. $log2 = new Logger('test2');
  115. Registry::addLogger($log1, 'log');
  116. Registry::addLogger($log2, 'log', true);
  117. $this->assertSame($log2, Registry::getInstance('log'));
  118. }
  119. /**
  120. * @covers Monolog\Registry::addLogger
  121. */
  122. public function testFailsOnUnspecifiedReplacement()
  123. {
  124. $log1 = new Logger('test1');
  125. $log2 = new Logger('test2');
  126. Registry::addLogger($log1, 'log');
  127. $this->expectException(\InvalidArgumentException::class);
  128. Registry::addLogger($log2, 'log');
  129. }
  130. }