Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
RefundOrderInventoryObserverTest.php
Go to the documentation of this file.
1 <?php
7 
12 
16 class RefundOrderInventoryObserverTest extends \PHPUnit\Framework\TestCase
17 {
21  protected $observer;
22 
26  protected $priceIndexer;
27 
32 
36  protected $stockManagement;
37 
42 
46  protected $event;
47 
51  protected $eventObserver;
52 
57 
62 
67 
71  private $orderMock;
72 
73  protected function setUp()
74  {
75  $this->stockIndexerProcessor = $this->createPartialMock(
76  \Magento\CatalogInventory\Model\Indexer\Stock\Processor::class,
77  ['reindexList']
78  );
79 
80  $this->stockManagement = $this->createMock(\Magento\CatalogInventory\Model\StockManagement::class);
81 
82  $this->stockConfiguration = $this->getMockForAbstractClass(
83  \Magento\CatalogInventory\Api\StockConfigurationInterface::class,
84  [
85  'isAutoReturnEnabled',
86  'isDisplayProductStockStatus'
87  ],
88  '',
89  false
90  );
91 
92  $this->priceIndexer = $this->getMockBuilder(\Magento\Catalog\Model\Indexer\Product\Price\Processor::class)
93  ->disableOriginalConstructor()
94  ->getMock();
95 
96  $this->event = $this->getMockBuilder(\Magento\Framework\Event::class)
97  ->disableOriginalConstructor()
98  ->setMethods(['getProduct', 'getCollection', 'getCreditmemo', 'getQuote', 'getWebsite'])
99  ->getMock();
100 
101  $this->eventObserver = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
102  ->disableOriginalConstructor()
103  ->setMethods(['getEvent'])
104  ->getMock();
105 
106  $this->eventObserver->expects($this->atLeastOnce())
107  ->method('getEvent')
108  ->will($this->returnValue($this->event));
109 
110  $this->orderRepositoryMock = $this->getMockBuilder(OrderRepository::class)
111  ->disableOriginalConstructor()
112  ->getMock();
113 
114  $this->returnProcessorMock = $this->getMockBuilder(ReturnProcessor::class)
115  ->disableOriginalConstructor()
116  ->getMock();
117 
118  $this->orderMock = $this->getMockBuilder(OrderInterface::class)
119  ->disableOriginalConstructor()
120  ->getMock();
121 
122  $this->objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
123 
124  $this->observer = $this->objectManagerHelper->getObject(
125  \Magento\SalesInventory\Observer\RefundOrderInventoryObserver::class,
126  [
127  'stockConfiguration' => $this->stockConfiguration,
128  'stockManagement' => $this->stockManagement,
129  'stockIndexerProcessor' => $this->stockIndexerProcessor,
130  'priceIndexer' => $this->priceIndexer,
131  ]
132  );
133 
134  $this->objectManagerHelper->setBackwardCompatibleProperty(
135  $this->observer,
136  'orderRepository',
137  $this->orderRepositoryMock
138  );
139  $this->objectManagerHelper->setBackwardCompatibleProperty(
140  $this->observer,
141  'returnProcessor',
142  $this->returnProcessorMock
143  );
144  }
145 
146  public function testRefundOrderInventory()
147  {
148  $ids = ['1', '14'];
149  $items = [];
150 
151  $creditMemo = $this->createMock(\Magento\Sales\Model\Order\Creditmemo::class);
152 
153  foreach ($ids as $id) {
154  $item = $this->getCreditMemoItem($id);
155  $items[] = $item;
156  }
157 
158  $creditMemo->expects($this->once())
159  ->method('getItems')
160  ->will($this->returnValue($items));
161  $this->event->expects($this->once())
162  ->method('getCreditmemo')
163  ->will($this->returnValue($creditMemo));
164 
165  $this->orderRepositoryMock->expects($this->once())
166  ->method('get')
167  ->willReturn($this->orderMock);
168 
169  $this->returnProcessorMock->expects($this->once())
170  ->method('execute')
171  ->with($creditMemo, $this->orderMock, $ids);
172 
173  $this->observer->execute($this->eventObserver);
174  }
175 
180  private function getCreditMemoItem($productId)
181  {
182  $backToStock = true;
183  $item = $this->createPartialMock(
184  \Magento\Sales\Model\Order\Creditmemo\Item::class,
185  ['getOrderItemId', 'getBackToStock', 'getQty', '__wakeup']
186  );
187  $item->expects($this->any())->method('getBackToStock')->willReturn($backToStock);
188  $item->expects($this->any())->method('getOrderItemId')->willReturn($productId);
189  return $item;
190  }
191 }
$id
Definition: fieldset.phtml:14
$items