ManagerTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Migration\Logger;
  7. class ManagerTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var Manager
  11. */
  12. protected $manager;
  13. /**
  14. * @var Logger|\PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $logger;
  17. /**
  18. * @var ConsoleHandler|\PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $consoleHandler;
  21. /**
  22. * @var \Migration\Logger\FileHandler|\PHPUnit_Framework_MockObject_MockObject
  23. */
  24. protected $fileHandler;
  25. /**
  26. * @var \Migration\Logger\MessageFormatter|\PHPUnit_Framework_MockObject_MockObject
  27. */
  28. protected $messageFormatter;
  29. /**
  30. * @var \Migration\Logger\MessageProcessor|\PHPUnit_Framework_MockObject_MockObject
  31. */
  32. protected $messageProcessor;
  33. /**
  34. * @return void
  35. */
  36. protected function setUp()
  37. {
  38. $this->logger = $this->createPartialMock(
  39. \Migration\Logger\Logger::class,
  40. ['pushHandler', 'pushProcessor', 'error']
  41. );
  42. $this->consoleHandler = $this->createPartialMock(
  43. \Migration\Logger\ConsoleHandler::class,
  44. ['setLevel', 'setFormatter']
  45. );
  46. $this->fileHandler = $this->createPartialMock(
  47. \Migration\Logger\FileHandler::class,
  48. ['setLevel', 'setFormatter']
  49. );
  50. $this->messageFormatter = $this->createMock(\Migration\Logger\MessageFormatter::class);
  51. $this->messageProcessor = $this->createMock(\Migration\Logger\MessageProcessor::class);
  52. $this->manager = new Manager(
  53. $this->logger,
  54. $this->consoleHandler,
  55. $this->fileHandler,
  56. $this->messageFormatter,
  57. $this->messageProcessor
  58. );
  59. }
  60. /**
  61. * @return array
  62. */
  63. public function dataProviderProcessSuccess()
  64. {
  65. return [
  66. ['logLevel' => 'info', 'logLevelCode' => 200],
  67. ['logLevel' => 'debug', 'logLevelCode' => 100],
  68. ['logLevel' => 'ERROR', 'logLevelCode' => 400],
  69. ['logLevel' => 'InFo', 'logLevelCode' => 200],
  70. ['logLevel' => 'Debug', 'logLevelCode' => 100],
  71. ];
  72. }
  73. /**
  74. * @param string $logLevel
  75. * @param int $logLevelCode
  76. * @dataProvider dataProviderProcessSuccess
  77. * @return void
  78. */
  79. public function testProcessSuccess($logLevel, $logLevelCode)
  80. {
  81. $this->logger->expects($this->any())->method('pushHandler')->willReturnSelf();
  82. $this->logger->expects($this->once())->method('pushProcessor')->with([$this->messageProcessor, 'setExtra'])
  83. ->willReturnSelf();
  84. $this->consoleHandler->expects($this->once())->method('setLevel')->willReturnSelf($logLevelCode);
  85. $this->consoleHandler->expects($this->once())->method('setFormatter')->with($this->messageFormatter)
  86. ->willReturnSelf();
  87. $this->fileHandler->expects($this->once())->method('setLevel')->willReturnSelf();
  88. $this->fileHandler->expects($this->once())->method('setFormatter')->with($this->messageFormatter)
  89. ->willReturnSelf();
  90. $this->manager->process($logLevel);
  91. }
  92. /**
  93. * @return array
  94. */
  95. public function dataProviderProcessInvalidLevel()
  96. {
  97. return [
  98. ['logLevel' => 'invalid'],
  99. ['logLevel' => 200]
  100. ];
  101. }
  102. /**
  103. * @param string $logLevel
  104. * @dataProvider dataProviderProcessInvalidLevel
  105. * @return void
  106. */
  107. public function testProcessInvalidLevel($logLevel)
  108. {
  109. $this->expectException(\Migration\Exception::class);
  110. $this->expectExceptionMessage("Invalid log level '$logLevel' provided.");
  111. $this->manager->process($logLevel);
  112. }
  113. }