OrderRepositoryTest.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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;
  7. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  8. use Magento\Sales\Api\Data\OrderInterface;
  9. use Magento\Sales\Api\Data\OrderSearchResultInterfaceFactory as SearchResultFactory;
  10. use Magento\Sales\Model\ResourceModel\Metadata;
  11. use Magento\Tax\Api\OrderTaxManagementInterface;
  12. use Magento\Payment\Api\Data\PaymentAdditionalInfoInterfaceFactory;
  13. /**
  14. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  15. */
  16. class OrderRepositoryTest extends \PHPUnit\Framework\TestCase
  17. {
  18. /**
  19. * @var \Magento\Sales\Model\OrderRepository
  20. */
  21. private $orderRepository;
  22. /**
  23. * @var Metadata|\PHPUnit_Framework_MockObject_MockObject
  24. */
  25. private $metadata;
  26. /**
  27. * @var SearchResultFactory|\PHPUnit_Framework_MockObject_MockObject
  28. */
  29. private $searchResultFactory;
  30. /**
  31. * @var ObjectManager
  32. */
  33. private $objectManager;
  34. /**
  35. * @var \PHPUnit_Framework_MockObject_MockObject
  36. */
  37. private $collectionProcessor;
  38. /**
  39. * @var OrderTaxManagementInterface|\PHPUnit_Framework_MockObject_MockObject
  40. */
  41. private $orderTaxManagementMock;
  42. /**
  43. * @var PaymentAdditionalInfoInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
  44. */
  45. private $paymentAdditionalInfoFactory;
  46. /**
  47. * Setup the test
  48. *
  49. * @return void
  50. */
  51. protected function setUp()
  52. {
  53. $this->objectManager = new ObjectManager($this);
  54. $className = \Magento\Sales\Model\ResourceModel\Metadata::class;
  55. $this->metadata = $this->createMock($className);
  56. $className = \Magento\Sales\Api\Data\OrderSearchResultInterfaceFactory::class;
  57. $this->searchResultFactory = $this->createPartialMock($className, ['create']);
  58. $this->collectionProcessor = $this->createMock(
  59. \Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface::class
  60. );
  61. $orderExtensionFactoryMock = $this->getMockBuilder(\Magento\Sales\Api\Data\OrderExtensionFactory::class)
  62. ->disableOriginalConstructor()
  63. ->getMock();
  64. $this->orderTaxManagementMock = $this->getMockBuilder(OrderTaxManagementInterface::class)
  65. ->disableOriginalConstructor()
  66. ->getMockForAbstractClass();
  67. $this->paymentAdditionalInfoFactory = $this->getMockBuilder(PaymentAdditionalInfoInterfaceFactory::class)
  68. ->disableOriginalConstructor()->setMethods(['create'])->getMockForAbstractClass();
  69. $this->orderRepository = $this->objectManager->getObject(
  70. \Magento\Sales\Model\OrderRepository::class,
  71. [
  72. 'metadata' => $this->metadata,
  73. 'searchResultFactory' => $this->searchResultFactory,
  74. 'collectionProcessor' => $this->collectionProcessor,
  75. 'orderExtensionFactory' => $orderExtensionFactoryMock,
  76. 'orderTaxManagement' => $this->orderTaxManagementMock,
  77. 'paymentAdditionalInfoFactory' => $this->paymentAdditionalInfoFactory
  78. ]
  79. );
  80. }
  81. /**
  82. * Test for method getList.
  83. *
  84. * @return void
  85. */
  86. public function testGetList()
  87. {
  88. $searchCriteriaMock = $this->createMock(\Magento\Framework\Api\SearchCriteria::class);
  89. $collectionMock = $this->createMock(\Magento\Sales\Model\ResourceModel\Order\Collection::class);
  90. $itemsMock = $this->getMockBuilder(OrderInterface::class)->disableOriginalConstructor()
  91. ->getMockForAbstractClass();
  92. $orderTaxDetailsMock = $this->getMockBuilder(\Magento\Tax\Api\Data\OrderTaxDetailsInterface::class)
  93. ->disableOriginalConstructor()
  94. ->setMethods(['getAppliedTaxes', 'getItems'])->getMockForAbstractClass();
  95. $paymentMock = $this->getMockBuilder(\Magento\Sales\Api\Data\OrderPaymentInterface::class)
  96. ->disableOriginalConstructor()->getMockForAbstractClass();
  97. $paymentAdditionalInfo = $this->getMockBuilder(\Magento\Payment\Api\Data\PaymentAdditionalInfoInterface::class)
  98. ->disableOriginalConstructor()->setMethods(['setKey', 'setValue'])->getMockForAbstractClass();
  99. $extensionAttributes = $this->createPartialMock(
  100. \Magento\Sales\Api\Data\OrderExtension::class,
  101. [
  102. 'getShippingAssignments', 'setShippingAssignments', 'setConvertingFromQuote',
  103. 'setAppliedTaxes', 'setItemAppliedTaxes', 'setPaymentAdditionalInfo'
  104. ]
  105. );
  106. $shippingAssignmentBuilder = $this->createMock(
  107. \Magento\Sales\Model\Order\ShippingAssignmentBuilder::class
  108. );
  109. $itemsMock->expects($this->atLeastOnce())->method('getEntityId')->willReturn(1);
  110. $this->collectionProcessor->expects($this->once())
  111. ->method('process')
  112. ->with($searchCriteriaMock, $collectionMock);
  113. $itemsMock->expects($this->atLeastOnce())->method('getExtensionAttributes')->willReturn($extensionAttributes);
  114. $itemsMock->expects($this->atleastOnce())->method('getPayment')->willReturn($paymentMock);
  115. $paymentMock->expects($this->atLeastOnce())->method('getAdditionalInformation')
  116. ->willReturn(['method' => 'checkmo']);
  117. $this->paymentAdditionalInfoFactory->expects($this->atLeastOnce())->method('create')
  118. ->willReturn($paymentAdditionalInfo);
  119. $paymentAdditionalInfo->expects($this->atLeastOnce())->method('setKey')->willReturnSelf();
  120. $paymentAdditionalInfo->expects($this->atLeastOnce())->method('setValue')->willReturnSelf();
  121. $this->orderTaxManagementMock->expects($this->atLeastOnce())->method('getOrderTaxDetails')
  122. ->willReturn($orderTaxDetailsMock);
  123. $extensionAttributes->expects($this->any())
  124. ->method('getShippingAssignments')
  125. ->willReturn($shippingAssignmentBuilder);
  126. $this->searchResultFactory->expects($this->once())->method('create')->willReturn($collectionMock);
  127. $collectionMock->expects($this->once())->method('getItems')->willReturn([$itemsMock]);
  128. $this->assertEquals($collectionMock, $this->orderRepository->getList($searchCriteriaMock));
  129. }
  130. /**
  131. * Test for method save.
  132. *
  133. * @return void
  134. */
  135. public function testSave()
  136. {
  137. $mapperMock = $this->getMockBuilder(\Magento\Sales\Model\ResourceModel\Order::class)
  138. ->disableOriginalConstructor()
  139. ->getMock();
  140. $orderEntity = $this->createMock(\Magento\Sales\Model\Order::class);
  141. $extensionAttributes = $this->createPartialMock(
  142. \Magento\Sales\Api\Data\OrderExtension::class,
  143. ['getShippingAssignments']
  144. );
  145. $shippingAssignment = $this->getMockBuilder(\Magento\Sales\Model\Order\ShippingAssignment::class)
  146. ->disableOriginalConstructor()
  147. ->setMethods(['getShipping'])
  148. ->getMock();
  149. $shippingMock = $this->getMockBuilder(\Magento\Sales\Model\Order\Shipping::class)
  150. ->disableOriginalConstructor()
  151. ->setMethods(['getAddress', 'getMethod'])
  152. ->getMock();
  153. $orderEntity->expects($this->once())->method('getExtensionAttributes')->willReturn($extensionAttributes);
  154. $orderEntity->expects($this->once())->method('getIsNotVirtual')->willReturn(true);
  155. $extensionAttributes
  156. ->expects($this->any())
  157. ->method('getShippingAssignments')
  158. ->willReturn([$shippingAssignment]);
  159. $shippingAssignment->expects($this->once())->method('getShipping')->willReturn($shippingMock);
  160. $shippingMock->expects($this->once())->method('getAddress');
  161. $shippingMock->expects($this->once())->method('getMethod');
  162. $this->metadata->expects($this->once())->method('getMapper')->willReturn($mapperMock);
  163. $mapperMock->expects($this->once())->method('save');
  164. $orderEntity->expects($this->any())->method('getEntityId')->willReturn(1);
  165. $this->orderRepository->save($orderEntity);
  166. }
  167. }