Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ReturnToStockInvoiceTest.php
Go to the documentation of this file.
1 <?php
8 
13 class ReturnToStockInvoiceTest extends \PHPUnit\Framework\TestCase
14 {
16  private $returnTOStock;
17 
21  private $returnProcessorMock;
22 
26  private $creditmemoRepositoryMock;
27 
31  private $invoiceRepositoryMock;
32 
36  private $orderRepositoryMock;
37 
41  private $refundInvoiceMock;
42 
46  private $creditmemoCreationArgumentsMock;
47 
51  private $orderMock;
52 
56  private $creditmemoMock;
57 
61  private $invoiceMock;
62 
66  private $extensionAttributesMock;
67 
71  private $stockConfigurationMock;
72 
73  protected function setUp()
74  {
75  $this->returnProcessorMock = $this->getMockBuilder(\Magento\SalesInventory\Model\Order\ReturnProcessor::class)
76  ->disableOriginalConstructor()
77  ->getMock();
78  $this->creditmemoRepositoryMock = $this->getMockBuilder(\Magento\Sales\Api\CreditmemoRepositoryInterface::class)
79  ->disableOriginalConstructor()
80  ->getMock();
81  $this->orderRepositoryMock = $this->getMockBuilder(\Magento\Sales\Api\OrderRepositoryInterface::class)
82  ->disableOriginalConstructor()
83  ->getMock();
84  $this->invoiceRepositoryMock = $this->getMockBuilder(\Magento\Sales\Api\InvoiceRepositoryInterface::class)
85  ->disableOriginalConstructor()
86  ->getMock();
87  $this->refundInvoiceMock = $this->getMockBuilder(\Magento\Sales\Api\RefundInvoiceInterface::class)
88  ->disableOriginalConstructor()
89  ->getMock();
90  $this->creditmemoCreationArgumentsMock = $this->getMockBuilder(
91  \Magento\Sales\Api\Data\CreditmemoCreationArgumentsInterface::class
92  )->disableOriginalConstructor()
93  ->getMock();
94  $this->extensionAttributesMock = $this->getMockBuilder(
95  \Magento\Sales\Api\Data\CreditmemoCreationArgumentsExtensionInterface::class
96  )->disableOriginalConstructor()
97  ->setMethods(['getReturnToStockItems'])
98  ->getMockForAbstractClass();
99  $this->orderMock = $this->getMockBuilder(\Magento\Sales\Api\Data\OrderInterface::class)
100  ->disableOriginalConstructor()
101  ->getMock();
102  $this->creditmemoMock = $this->getMockBuilder(\Magento\Sales\Api\Data\CreditmemoInterface::class)
103  ->disableOriginalConstructor()
104  ->getMock();
105  $this->invoiceMock = $this->getMockBuilder(\Magento\Sales\Api\Data\InvoiceInterface::class)
106  ->disableOriginalConstructor()
107  ->getMock();
108  $this->stockConfigurationMock = $this->getMockBuilder(
109  \Magento\CatalogInventory\Api\StockConfigurationInterface::class
110  )->disableOriginalConstructor()
111  ->getMock();
112 
113  $this->returnTOStock = new \Magento\SalesInventory\Model\Plugin\Order\ReturnToStockInvoice(
114  $this->returnProcessorMock,
115  $this->creditmemoRepositoryMock,
116  $this->orderRepositoryMock,
117  $this->invoiceRepositoryMock,
118  $this->stockConfigurationMock
119  );
120  }
121 
122  public function testAfterExecute()
123  {
124  $orderId = 1;
125  $creditmemoId = 99;
126  $items = [];
127  $returnToStockItems = [1];
128  $invoiceId = 98;
129  $this->creditmemoCreationArgumentsMock->expects($this->exactly(3))
130  ->method('getExtensionAttributes')
131  ->willReturn($this->extensionAttributesMock);
132 
133  $this->invoiceRepositoryMock->expects($this->once())
134  ->method('get')
135  ->with($invoiceId)
136  ->willReturn($this->invoiceMock);
137 
138  $this->extensionAttributesMock->expects($this->exactly(2))
139  ->method('getReturnToStockItems')
140  ->willReturn($returnToStockItems);
141 
142  $this->orderRepositoryMock->expects($this->once())
143  ->method('get')
144  ->with($orderId)
145  ->willReturn($this->orderMock);
146 
147  $this->creditmemoRepositoryMock->expects($this->once())
148  ->method('get')
149  ->with($creditmemoId)
150  ->willReturn($this->creditmemoMock);
151 
152  $this->returnProcessorMock->expects($this->once())
153  ->method('execute')
154  ->with($this->creditmemoMock, $this->orderMock, $returnToStockItems);
155 
156  $this->invoiceMock->expects($this->once())
157  ->method('getOrderId')
158  ->willReturn($orderId);
159 
160  $this->stockConfigurationMock->expects($this->once())
161  ->method('isAutoReturnEnabled')
162  ->willReturn(false);
163 
164  $this->assertEquals(
165  $this->returnTOStock->afterExecute(
166  $this->refundInvoiceMock,
167  $creditmemoId,
168  $invoiceId,
169  $items,
170  false,
171  false,
172  false,
173  null,
174  $this->creditmemoCreationArgumentsMock
175  ),
176  $creditmemoId
177  );
178  }
179 }
$items