LocalizedExceptionTest.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Exception\Test\Unit;
  7. use \Magento\Framework\Exception\LocalizedException;
  8. use Magento\Framework\Phrase;
  9. /**
  10. * Class LocalizedExceptionTest
  11. */
  12. class LocalizedExceptionTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /** @var \Magento\Framework\Phrase\RendererInterface */
  15. private $defaultRenderer;
  16. /** @var string */
  17. private $renderedMessage;
  18. /**
  19. * @return void
  20. */
  21. protected function setUp()
  22. {
  23. $this->defaultRenderer = \Magento\Framework\Phrase::getRenderer();
  24. $rendererMock = $this->getMockBuilder(\Magento\Framework\Phrase\Renderer\Placeholder::class)
  25. ->disableOriginalConstructor()
  26. ->getMock();
  27. $this->renderedMessage = 'rendered message';
  28. $rendererMock->expects($this->once())
  29. ->method('render')
  30. ->will($this->returnValue($this->renderedMessage));
  31. \Magento\Framework\Phrase::setRenderer($rendererMock);
  32. }
  33. /**
  34. * @return void
  35. */
  36. public function tearDown()
  37. {
  38. \Magento\Framework\Phrase::setRenderer($this->defaultRenderer);
  39. }
  40. /**
  41. * @param string $message
  42. * @param array $params
  43. * @param string $expectedLogMessage
  44. * @return void
  45. * @dataProvider constructorParametersDataProvider
  46. */
  47. public function testConstructor($message, $params, $expectedLogMessage)
  48. {
  49. $cause = new \Exception();
  50. $localizeException = new LocalizedException(
  51. new Phrase($message, $params),
  52. $cause
  53. );
  54. $this->assertEquals(0, $localizeException->getCode());
  55. $this->assertEquals($message, $localizeException->getRawMessage());
  56. $this->assertEquals($this->renderedMessage, $localizeException->getMessage());
  57. $this->assertEquals($expectedLogMessage, $localizeException->getLogMessage());
  58. $this->assertSame($cause, $localizeException->getPrevious());
  59. }
  60. /**
  61. * @return array
  62. */
  63. public function constructorParametersDataProvider()
  64. {
  65. return [
  66. 'withNoNameParameters' => [
  67. 'message %1 %2',
  68. ['parameter1',
  69. 'parameter2'],
  70. 'message parameter1 parameter2',
  71. ],
  72. 'withNamedParameters' => [
  73. 'message %key1 %key2',
  74. ['key1' => 'parameter1',
  75. 'key2' => 'parameter2'],
  76. 'message parameter1 parameter2',
  77. ],
  78. 'withoutParameters' => [
  79. 'message',
  80. [],
  81. 'message',
  82. 'message',
  83. ],
  84. ];
  85. }
  86. /**
  87. * @return void
  88. */
  89. public function testGetRawMessage()
  90. {
  91. $message = 'message %1 %2';
  92. $params = [
  93. 'parameter1',
  94. 'parameter2',
  95. ];
  96. $cause = new \Exception();
  97. $localizeException = new LocalizedException(
  98. new Phrase($message, $params),
  99. $cause
  100. );
  101. $this->assertEquals($message, $localizeException->getRawMessage());
  102. }
  103. /**
  104. * @return void
  105. */
  106. public function testGetParameters()
  107. {
  108. $message = 'message %1 %2';
  109. $params = [
  110. 'parameter1',
  111. 'parameter2',
  112. ];
  113. $cause = new \Exception();
  114. $localizeException = new LocalizedException(
  115. new Phrase($message, $params),
  116. $cause
  117. );
  118. $this->assertEquals($params, $localizeException->getParameters());
  119. }
  120. /**
  121. * @return void
  122. */
  123. public function testGetLogMessage()
  124. {
  125. $message = 'message %1 %2';
  126. $params = [
  127. 'parameter1',
  128. 'parameter2',
  129. ];
  130. $cause = new \Exception();
  131. $localizeException = new LocalizedException(
  132. new Phrase($message, $params),
  133. $cause
  134. );
  135. $expectedLogMessage = 'message parameter1 parameter2';
  136. $this->assertEquals($expectedLogMessage, $localizeException->getLogMessage());
  137. }
  138. public function testGetCode()
  139. {
  140. $expectedCode = 42;
  141. $localizedException = new LocalizedException(
  142. new Phrase("message %1", ['test']),
  143. new \Exception(),
  144. $expectedCode
  145. );
  146. $this->assertEquals($expectedCode, $localizedException->getCode());
  147. }
  148. }