NoSuchEntityExceptionTest.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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\NoSuchEntityException;
  8. use Magento\Framework\Phrase;
  9. /**
  10. * Class NoSuchEntityExceptionTest
  11. */
  12. class NoSuchEntityExceptionTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /** @var \Magento\Framework\Phrase\RendererInterface */
  15. private $defaultRenderer;
  16. /** @var string */
  17. private $renderedMessage;
  18. /**
  19. * @var \Magento\Framework\Phrase\Renderer\Placeholder|\PHPUnit_Framework_MockObject_MockObject
  20. */
  21. protected $rendererMock;
  22. /**
  23. * @return void
  24. */
  25. protected function setUp()
  26. {
  27. $this->defaultRenderer = \Magento\Framework\Phrase::getRenderer();
  28. $this->rendererMock = $this->getMockBuilder(\Magento\Framework\Phrase\Renderer\Placeholder::class)
  29. ->setMethods(['render'])
  30. ->disableOriginalConstructor()
  31. ->getMock();
  32. }
  33. /**
  34. * @return void
  35. */
  36. public function tearDown()
  37. {
  38. \Magento\Framework\Phrase::setRenderer($this->defaultRenderer);
  39. }
  40. /**
  41. * @return void
  42. */
  43. public function testConstructor()
  44. {
  45. $this->renderedMessage = 'rendered message';
  46. $this->rendererMock->expects($this->once())
  47. ->method('render')
  48. ->will($this->returnValue($this->renderedMessage));
  49. \Magento\Framework\Phrase::setRenderer($this->rendererMock);
  50. $message = 'message %1 %2';
  51. $params = [
  52. 'parameter1',
  53. 'parameter2',
  54. ];
  55. $expectedLogMessage = 'message parameter1 parameter2';
  56. $cause = new \Exception();
  57. $localizeException = new NoSuchEntityException(
  58. new Phrase($message, $params),
  59. $cause
  60. );
  61. $this->assertEquals(0, $localizeException->getCode());
  62. $this->assertEquals($message, $localizeException->getRawMessage());
  63. $this->assertEquals($this->renderedMessage, $localizeException->getMessage());
  64. $this->assertEquals($expectedLogMessage, $localizeException->getLogMessage());
  65. $this->assertSame($cause, $localizeException->getPrevious());
  66. }
  67. /**
  68. * @return void
  69. */
  70. public function testSingleField()
  71. {
  72. $fieldName = 'storeId';
  73. $fieldValue = 15;
  74. $this->assertSame(
  75. "No such entity with $fieldName = $fieldValue",
  76. NoSuchEntityException::singleField($fieldName, $fieldValue)->getMessage()
  77. );
  78. }
  79. /**
  80. * @return void
  81. */
  82. public function testDoubleField()
  83. {
  84. $website = 'website';
  85. $websiteValue = 15;
  86. $email = 'email';
  87. $emailValue = 'example@magento.com';
  88. NoSuchEntityException::doubleField($website, $websiteValue, $email, $emailValue);
  89. $this->assertSame(
  90. "No such entity with $website = $websiteValue, $email = $emailValue",
  91. NoSuchEntityException::doubleField($website, $websiteValue, $email, $emailValue)->getMessage()
  92. );
  93. }
  94. }