Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ReturnProcessorTest.php
Go to the documentation of this file.
1 <?php
7 
18 
23 class ReturnProcessorTest extends \PHPUnit\Framework\TestCase
24 {
28  private $orderMock;
29 
33  private $creditmemoMock;
34 
38  private $stockManagementMock;
39 
43  private $stockIndexerProcessorMock;
44 
48  private $priceIndexerMock;
49 
53  private $storeManagerMock;
54 
58  private $orderItemRepositoryMock;
59 
63  private $creditmemoItemMock;
64 
66  private $returnProcessor;
67 
69  private $orderItemMock;
70 
72  private $storeMock;
73 
74  public function setUp()
75  {
76  $this->stockManagementMock = $this->getMockBuilder(StockManagementInterface::class)
77  ->disableOriginalConstructor()
78  ->getMock();
79  $this->stockIndexerProcessorMock = $this->getMockBuilder(
80  \Magento\CatalogInventory\Model\Indexer\Stock\Processor::class
81  )->disableOriginalConstructor()
82  ->getMock();
83  $this->priceIndexerMock = $this->getMockBuilder(\Magento\Catalog\Model\Indexer\Product\Price\Processor::class)
84  ->disableOriginalConstructor()
85  ->getMock();
86  $this->storeManagerMock = $this->getMockBuilder(StoreManagerInterface::class)
87  ->disableOriginalConstructor()
88  ->getMock();
89  $this->orderItemRepositoryMock = $this->getMockBuilder(OrderRepositoryInterface::class)
90  ->disableOriginalConstructor()
91  ->getMock();
92  $this->orderItemRepositoryMock = $this->getMockBuilder(OrderItemRepositoryInterface::class)
93  ->disableOriginalConstructor()
94  ->getMock();
95  $this->orderMock = $this->getMockBuilder(OrderInterface::class)
96  ->disableOriginalConstructor()
97  ->getMock();
98  $this->creditmemoMock = $this->getMockBuilder(CreditmemoInterface::class)
99  ->disableOriginalConstructor()
100  ->getMock();
101  $this->creditmemoItemMock = $this->getMockBuilder(CreditmemoItemInterface::class)
102  ->disableOriginalConstructor()
103  ->getMock();
104  $this->orderItemMock = $this->getMockBuilder(OrderItemInterface::class)
105  ->disableOriginalConstructor()
106  ->getMock();
107  $this->storeMock = $this->getMockBuilder(StoreInterface::class)
108  ->disableOriginalConstructor()
109  ->getMock();
110 
111  $this->returnProcessor = new ReturnProcessor(
112  $this->stockManagementMock,
113  $this->stockIndexerProcessorMock,
114  $this->priceIndexerMock,
115  $this->storeManagerMock,
116  $this->orderItemRepositoryMock
117  );
118  }
119 
120  public function testExecute()
121  {
122  $orderItemId = 99;
123  $productId = 50;
124  $returnToStockItems = [$orderItemId];
125  $parentItemId = 52;
126  $qty = 1;
127  $storeId = 0;
128  $webSiteId = 10;
129 
130  $this->creditmemoMock->expects($this->once())
131  ->method('getItems')
132  ->willReturn([$this->creditmemoItemMock]);
133 
134  $this->creditmemoItemMock->expects($this->exactly(2))
135  ->method('getOrderItemId')
136  ->willReturn($orderItemId);
137 
138  $this->creditmemoItemMock->expects($this->once())
139  ->method('getProductId')
140  ->willReturn($productId);
141 
142  $this->orderItemRepositoryMock->expects($this->once())
143  ->method('get')
144  ->with($orderItemId)
145  ->willReturn($this->orderItemMock);
146 
147  $this->orderMock->expects($this->once())
148  ->method('getStoreId')
149  ->willReturn($storeId);
150 
151  $this->storeManagerMock->expects($this->once())
152  ->method('getStore')
153  ->with($storeId)
154  ->willReturn($this->storeMock);
155 
156  $this->storeMock->expects($this->once())
157  ->method('getWebsiteId')
158  ->willReturn($webSiteId);
159 
160  $this->stockManagementMock->expects($this->once())
161  ->method('backItemQty')
162  ->with($productId, $qty, $webSiteId)
163  ->willReturn(true);
164 
165  $this->stockIndexerProcessorMock->expects($this->once())
166  ->method('reindexList')
167  ->with([$productId]);
168 
169  $this->priceIndexerMock->expects($this->once())
170  ->method('reindexList')
171  ->with([$productId]);
172 
173  $this->orderItemMock->expects($this->once())
174  ->method('getParentItemId')
175  ->willReturn($parentItemId);
176 
177  $this->creditmemoItemMock->expects($this->once())
178  ->method('getQty')
179  ->willReturn($qty);
180 
181  $this->returnProcessor->execute($this->creditmemoMock, $this->orderMock, $returnToStockItems);
182  }
183 }