RendererTest.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Test\Unit\Model\Order\Address;
  7. use Magento\Sales\Model\Order\Address\Renderer as OrderAddressRenderer;
  8. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
  9. use Magento\Customer\Model\Address\Config as CustomerAddressConfig;
  10. use Magento\Framework\Event\ManagerInterface as EventManager;
  11. use Magento\Sales\Model\Order\Address as OrderAddress;
  12. use Magento\Sales\Model\Order;
  13. use Magento\Customer\Block\Address\Renderer\RendererInterface as CustomerAddressBlockRenderer;
  14. use Magento\Framework\DataObject;
  15. class RendererTest extends \PHPUnit\Framework\TestCase
  16. {
  17. /**
  18. * @var OrderAddressRenderer
  19. */
  20. private $orderAddressRenderer;
  21. /**
  22. * @var ObjectManagerHelper
  23. */
  24. private $objectManagerHelper;
  25. /**
  26. * @var CustomerAddressConfig|\PHPUnit_Framework_MockObject_MockObject
  27. */
  28. private $customerAddressConfigMock;
  29. /**
  30. * @var EventManager|\PHPUnit_Framework_MockObject_MockObject
  31. */
  32. private $eventManagerMock;
  33. /**
  34. * @var OrderAddress|\PHPUnit_Framework_MockObject_MockObject
  35. */
  36. private $orderAddressMock;
  37. /**
  38. * @var Order|\PHPUnit_Framework_MockObject_MockObject
  39. */
  40. private $orderMock;
  41. /**
  42. * @var CustomerAddressBlockRenderer|\PHPUnit_Framework_MockObject_MockObject
  43. */
  44. private $customerAddressBlockRendererMock;
  45. protected function setUp()
  46. {
  47. $this->customerAddressConfigMock = $this->getMockBuilder(CustomerAddressConfig::class)
  48. ->disableOriginalConstructor()
  49. ->getMock();
  50. $this->eventManagerMock = $this->getMockBuilder(EventManager::class)
  51. ->getMockForAbstractClass();
  52. $this->orderAddressMock = $this->getMockBuilder(OrderAddress::class)
  53. ->disableOriginalConstructor()
  54. ->getMock();
  55. $this->orderMock = $this->getMockBuilder(Order::class)
  56. ->disableOriginalConstructor()
  57. ->getMock();
  58. $this->customerAddressBlockRendererMock = $this->getMockBuilder(CustomerAddressBlockRenderer::class)
  59. ->getMockForAbstractClass();
  60. $this->orderAddressMock->expects(static::any())
  61. ->method('getOrder')
  62. ->willReturn($this->orderMock);
  63. $this->objectManagerHelper = new ObjectManagerHelper($this);
  64. $this->orderAddressRenderer = $this->objectManagerHelper->getObject(
  65. OrderAddressRenderer::class,
  66. [
  67. 'addressConfig' => $this->customerAddressConfigMock,
  68. 'eventManager' => $this->eventManagerMock
  69. ]
  70. );
  71. }
  72. public function testFormat()
  73. {
  74. $type = 'html';
  75. $formatType = new DataObject(['renderer' => $this->customerAddressBlockRendererMock]);
  76. $addressData = ['address', 'data'];
  77. $result = 'result string';
  78. $this->setStoreExpectations(1);
  79. $this->customerAddressConfigMock->expects(static::atLeastOnce())
  80. ->method('getFormatByCode')
  81. ->with($type)
  82. ->willReturn($formatType);
  83. $this->eventManagerMock->expects(static::once())
  84. ->method('dispatch')
  85. ->with('customer_address_format', ['type' => $formatType, 'address' => $this->orderAddressMock]);
  86. $this->orderAddressMock->expects(static::atLeastOnce())
  87. ->method('getData')
  88. ->willReturn($addressData);
  89. $this->customerAddressBlockRendererMock->expects(static::once())
  90. ->method('renderArray')
  91. ->with($addressData, null)
  92. ->willReturn($result);
  93. $this->assertEquals($result, $this->orderAddressRenderer->format($this->orderAddressMock, $type));
  94. }
  95. public function testFormatNoRenderer()
  96. {
  97. $type = 'html';
  98. $this->setStoreExpectations(1);
  99. $this->customerAddressConfigMock->expects(static::atLeastOnce())
  100. ->method('getFormatByCode')
  101. ->with($type)
  102. ->willReturn(null);
  103. $this->eventManagerMock->expects(static::never())
  104. ->method('dispatch');
  105. $this->assertEquals(null, $this->orderAddressRenderer->format($this->orderAddressMock, $type));
  106. }
  107. /**
  108. * Set expectations for store
  109. *
  110. * @param string|int $storeId
  111. * @return void
  112. */
  113. private function setStoreExpectations($storeId)
  114. {
  115. $this->orderMock->expects(static::atLeastOnce())
  116. ->method('getStoreId')
  117. ->willReturn($storeId);
  118. $this->customerAddressConfigMock->expects(static::atLeastOnce())
  119. ->method('setStore')
  120. ->with($storeId)
  121. ->willReturnSelf();
  122. }
  123. }