PhraseTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Test\Unit;
  7. use Magento\Framework\Phrase;
  8. class PhraseTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /**
  11. * @var \Magento\Framework\Phrase\RendererInterface
  12. */
  13. protected $defaultRenderer;
  14. /**
  15. * @var \Magento\Framework\Phrase\RendererInterface|\PHPUnit_Framework_MockObject_MockObject
  16. */
  17. protected $rendererMock;
  18. /**
  19. * SetUp method
  20. *
  21. * @return void
  22. */
  23. protected function setUp()
  24. {
  25. $this->defaultRenderer = Phrase::getRenderer();
  26. $this->rendererMock = $this->getMockBuilder(\Magento\Framework\Phrase\RendererInterface::class)
  27. ->getMock();
  28. }
  29. /**
  30. * Tear down
  31. *
  32. * @return void
  33. */
  34. protected function tearDown()
  35. {
  36. Phrase::setRenderer($this->defaultRenderer);
  37. }
  38. /**
  39. * Test rendering
  40. *
  41. * @return void
  42. */
  43. public function testRendering()
  44. {
  45. $text = 'some text';
  46. $arguments = ['arg1', 'arg2'];
  47. $result = 'rendered text';
  48. $phrase = new Phrase($text, $arguments);
  49. Phrase::setRenderer($this->rendererMock);
  50. $this->rendererMock->expects($this->once())
  51. ->method('render')
  52. ->with([$text], $arguments)
  53. ->willReturn($result);
  54. $this->assertEquals($result, $phrase->render());
  55. }
  56. /**
  57. * Test defers rendering
  58. *
  59. * @return void
  60. */
  61. public function testDefersRendering()
  62. {
  63. $this->rendererMock->expects($this->never())
  64. ->method('render');
  65. new Phrase('some text');
  66. }
  67. /**
  68. * Test that to string is alias to render
  69. *
  70. * @return void
  71. */
  72. public function testThatToStringIsAliasToRender()
  73. {
  74. $text = 'some text';
  75. $arguments = ['arg1', 'arg2'];
  76. $result = 'rendered text';
  77. $phrase = new Phrase($text, $arguments);
  78. Phrase::setRenderer($this->rendererMock);
  79. $this->rendererMock->expects($this->once())
  80. ->method('render')
  81. ->with([$text], $arguments)
  82. ->willReturn($result);
  83. $this->assertEquals($result, (string)$phrase);
  84. }
  85. /**
  86. * Test get text
  87. *
  88. * @return void
  89. */
  90. public function testGetText()
  91. {
  92. $text = 'some text';
  93. $phrase = new Phrase($text);
  94. $this->assertEquals($text, $phrase->getText());
  95. }
  96. /**
  97. * Test get arguments
  98. *
  99. * @return void
  100. */
  101. public function testGetArguments()
  102. {
  103. $text = 'some text';
  104. $arguments = ['arg1', 'arg2'];
  105. $phrase1 = new Phrase($text);
  106. $phrase2 = new Phrase($text, $arguments);
  107. $this->assertEquals([], $phrase1->getArguments());
  108. $this->assertEquals($arguments, $phrase2->getArguments());
  109. }
  110. public function testToStringWithExceptionOnRender()
  111. {
  112. $text = 'raw text';
  113. $exception = new \Exception('something went wrong');
  114. $phrase = new Phrase($text);
  115. $this->rendererMock->expects($this->any())
  116. ->method('render')
  117. ->willThrowException($exception);
  118. $this->assertEquals($text, (string)$phrase);
  119. }
  120. /**
  121. * Test default renderer
  122. */
  123. public function testDefaultRenderer()
  124. {
  125. $this->assertInstanceOf(\Magento\Framework\Phrase\Renderer\Placeholder::class, Phrase::getRenderer());
  126. }
  127. }