RenderTest.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Catalog\Test\Unit\Pricing;
  7. /**
  8. * Class RenderTest
  9. */
  10. class RenderTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var \Magento\Catalog\Pricing\Render
  14. */
  15. protected $object;
  16. /**
  17. * @var \Magento\Framework\Registry|\PHPUnit_Framework_MockObject_MockObject
  18. */
  19. protected $registry;
  20. /**
  21. * @var \Magento\Framework\View\LayoutInterface | \PHPUnit_Framework_MockObject_MockObject
  22. */
  23. protected $layout;
  24. /**
  25. * @var \PHPUnit_Framework_MockObject_MockObject
  26. */
  27. protected $pricingRenderBlock;
  28. protected function setUp()
  29. {
  30. $this->registry = $this->createPartialMock(\Magento\Framework\Registry::class, ['registry']);
  31. $this->pricingRenderBlock = $this->createMock(\Magento\Framework\Pricing\Render::class);
  32. $this->layout = $this->createMock(\Magento\Framework\View\Layout::class);
  33. $eventManager = $this->createMock(\Magento\Framework\Event\Test\Unit\ManagerStub::class);
  34. $scopeConfigMock = $this->getMockForAbstractClass(\Magento\Framework\App\Config\ScopeConfigInterface::class);
  35. $context = $this->createMock(\Magento\Framework\View\Element\Template\Context::class);
  36. $context->expects($this->any())
  37. ->method('getEventManager')
  38. ->will($this->returnValue($eventManager));
  39. $context->expects($this->any())
  40. ->method('getLayout')
  41. ->will($this->returnValue($this->layout));
  42. $context->expects($this->any())
  43. ->method('getScopeConfig')
  44. ->will($this->returnValue($scopeConfigMock));
  45. $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  46. $this->object = $objectManager->getObject(
  47. \Magento\Catalog\Pricing\Render::class,
  48. [
  49. 'context' => $context,
  50. 'registry' => $this->registry,
  51. 'data' => [
  52. 'price_render' => 'test_price_render',
  53. 'price_type_code' => 'test_price_type_code',
  54. 'module_name' => 'test_module_name',
  55. ]
  56. ]
  57. );
  58. }
  59. public function testToHtmlProductFromRegistry()
  60. {
  61. $expectedValue = 'string';
  62. $product = $this->createMock(\Magento\Catalog\Model\Product::class);
  63. $this->layout->expects($this->any())
  64. ->method('getBlock')
  65. ->will($this->returnValue($this->pricingRenderBlock));
  66. $this->registry->expects($this->once())
  67. ->method('registry')
  68. ->with($this->equalTo('product'))
  69. ->will($this->returnValue($product));
  70. $arguments = $this->object->getData();
  71. $arguments['render_block'] = $this->object;
  72. $this->pricingRenderBlock->expects($this->any())
  73. ->method('render')
  74. ->with(
  75. $this->equalTo('test_price_type_code'),
  76. $this->equalTo($product),
  77. $this->equalTo($arguments)
  78. )
  79. ->will($this->returnValue($expectedValue));
  80. $this->assertEquals($expectedValue, $this->object->toHtml());
  81. }
  82. public function testToHtmlProductFromParentBlock()
  83. {
  84. $expectedValue = 'string';
  85. $product = $this->createMock(\Magento\Catalog\Model\Product::class);
  86. $this->registry->expects($this->never())
  87. ->method('registry');
  88. $block = $this->createPartialMock(\Magento\Framework\Pricing\Render::class, ['getProductItem', 'render']);
  89. $arguments = $this->object->getData();
  90. $arguments['render_block'] = $this->object;
  91. $block->expects($this->any())
  92. ->method('render')
  93. ->with(
  94. $this->equalTo('test_price_type_code'),
  95. $this->equalTo($product),
  96. $this->equalTo($arguments)
  97. )
  98. ->will($this->returnValue($expectedValue));
  99. $block->expects($this->any())
  100. ->method('getProductItem')
  101. ->will($this->returnValue($product));
  102. $this->layout->expects($this->once())
  103. ->method('getParentName')
  104. ->will($this->returnValue('parent_name'));
  105. $this->layout->expects($this->any())
  106. ->method('getBlock')
  107. ->will($this->returnValue($block));
  108. $this->assertEquals($expectedValue, $this->object->toHtml());
  109. }
  110. }