ToOrderTest.php 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Quote\Test\Unit\Model\Quote\Address;
  7. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  8. /**
  9. * Tests Address convert to order address
  10. */
  11. class ToOrderTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @var \Magento\Framework\DataObject\Copy | \PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $objectCopyMock;
  17. /**
  18. * @var \Magento\Sales\Api\Data\OrderInterfaceFactory | \PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $orderDataFactoryMock;
  21. /**
  22. * @var \Magento\Sales\Api\Data\OrderInterface | \PHPUnit_Framework_MockObject_MockObject
  23. */
  24. protected $orderMock;
  25. /**
  26. * @var \Magento\Quote\Model\Quote\Address\ToOrder
  27. */
  28. protected $converter;
  29. /**
  30. * @var \PHPUnit_Framework_MockObject_MockObject
  31. */
  32. protected $eventManagerMock;
  33. /**
  34. * @var \Magento\Framework\Api\DataObjectHelper
  35. */
  36. protected $dataObjectHelper;
  37. protected function setUp()
  38. {
  39. $this->orderDataFactoryMock = $this->createPartialMock(
  40. \Magento\Sales\Api\Data\OrderInterfaceFactory::class,
  41. ['create']
  42. );
  43. $this->objectCopyMock = $this->createMock(\Magento\Framework\DataObject\Copy::class);
  44. $this->orderMock = $this->getMockBuilder(\Magento\Sales\Model\Order::class)
  45. ->disableOriginalConstructor()
  46. ->getMock();
  47. $this->eventManagerMock = $this->createMock(\Magento\Framework\Event\ManagerInterface::class);
  48. $this->dataObjectHelper = $this->createMock(\Magento\Framework\Api\DataObjectHelper::class);
  49. $objectManager = new ObjectManager($this);
  50. $this->converter = $objectManager->getObject(
  51. \Magento\Quote\Model\Quote\Address\ToOrder::class,
  52. [
  53. 'orderFactory' => $this->orderDataFactoryMock,
  54. 'objectCopyService' => $this->objectCopyMock,
  55. 'eventManager' => $this->eventManagerMock,
  56. 'dataObjectHelper' => $this->dataObjectHelper
  57. ]
  58. );
  59. }
  60. public function testConvert()
  61. {
  62. $orderData = ['test' => 'test1'];
  63. $data = ['test' => 'beer'];
  64. $quoteId = 1;
  65. $storeId = 777;
  66. $object = $this->createMock(\Magento\Quote\Model\Quote\Address::class);
  67. $quote = $this->createMock(\Magento\Quote\Model\Quote::class);
  68. $object->expects($this->exactly(5))->method('getQuote')->willReturn($quote);
  69. $quote->expects($this->once())->method('getId')->willReturn($quoteId);
  70. $quote->expects($this->once())->method('getStoreId')->willReturn($storeId);
  71. $this->objectCopyMock->expects($this->once())->method('getDataFromFieldset')->with(
  72. 'sales_convert_quote_address',
  73. 'to_order',
  74. $object
  75. )->willReturn($orderData);
  76. $this->dataObjectHelper->expects($this->once())->method('populateWithArray')
  77. ->with($this->orderMock, ['test' => 'beer'], \Magento\Sales\Api\Data\OrderInterface::class)
  78. ->willReturnSelf();
  79. $this->orderMock->expects($this->once())->method('setStoreId')->with($storeId)->willReturnSelf();
  80. $this->orderMock->expects($this->once())->method('setQuoteId')->with($quoteId)->willReturnSelf();
  81. $this->orderDataFactoryMock->expects($this->once())->method('create')->willReturn($this->orderMock);
  82. $this->eventManagerMock->expects($this->once())
  83. ->method('dispatch')
  84. ->with('sales_convert_quote_to_order', ['order' => $this->orderMock, 'quote' => $quote]);
  85. $this->assertSame($this->orderMock, $this->converter->convert($object, $data));
  86. }
  87. }