Skip to content

Commit 16a3982

Browse files
committed
UnitTestcase for PR_35972
1 parent d89b659 commit 16a3982

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

app/code/Magento/Sales/Test/Unit/Model/Order/ShipmentFactoryTest.php

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,102 @@ public function testCreate($tracks)
171171
$this->assertEquals($shipment, $this->subject->create($order, ['1' => 5], $tracks));
172172
}
173173

174+
/**
175+
* @param array|null $tracks
176+
* @dataProvider createDataProvider
177+
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
178+
*/
179+
public function testCreateWithFloatQtyShipment(?array $tracks): void
180+
{
181+
$orderItem = $this->createPartialMock(
182+
Item::class,
183+
['getId', 'getQtyOrdered', 'getParentItemId', 'getIsVirtual','getIsQtyDecimal']
184+
);
185+
$orderItem->expects($this->any())
186+
->method('getIsQtyDecimal')
187+
->willReturn(true);
188+
$orderItem->expects($this->any())
189+
->method('getId')
190+
->willReturn(1);
191+
$orderItem->expects($this->any())
192+
->method('getQtyOrdered')
193+
->willReturn(0.5);
194+
$orderItem->expects($this->any())->method('getParentItemId')->willReturn(false);
195+
$orderItem->expects($this->any())->method('getIsVirtual')->willReturn(false);
196+
197+
$shipmentItem = $this->createPartialMock(
198+
\Magento\Sales\Model\Order\Shipment\Item::class,
199+
['setQty', 'getOrderItem', 'getQty']
200+
);
201+
$shipmentItem->expects($this->once())
202+
->method('setQty')
203+
->with(0.5);
204+
$shipmentItem->expects($this->once())
205+
->method('getQty')
206+
->willReturn(0.5);
207+
208+
$shipmentItem->expects($this->atLeastOnce())->method('getOrderItem')->willReturn($orderItem);
209+
210+
$order = $this->createPartialMock(\Magento\Sales\Model\Order::class, ['getAllItems']);
211+
$order->expects($this->any())
212+
->method('getAllItems')
213+
->willReturn([$orderItem]);
214+
215+
$shipment = $this->createPartialMock(
216+
Shipment::class,
217+
['addItem', 'setTotalQty', 'addTrack']
218+
);
219+
$shipment->expects($this->once())
220+
->method('addItem')
221+
->with($shipmentItem);
222+
$shipment->expects($this->once())
223+
->method('setTotalQty')
224+
->with(0.5)
225+
->willReturn($shipment);
226+
227+
$this->converter->expects($this->any())
228+
->method('toShipment')
229+
->with($order)
230+
->willReturn($shipment);
231+
$this->converter->expects($this->any())
232+
->method('itemToShipmentItem')
233+
->with($orderItem)
234+
->willReturn($shipmentItem);
235+
236+
if ($tracks) {
237+
$shipmentTrack = $this->createPartialMock(Track::class, ['addData']);
238+
239+
if (empty($tracks[0]['number'])) {
240+
$shipmentTrack->expects($this->never())
241+
->method('addData');
242+
243+
$this->trackFactory->expects($this->never())
244+
->method('create');
245+
246+
$shipment->expects($this->never())
247+
->method('addTrack');
248+
249+
$this->expectException(
250+
LocalizedException::class
251+
);
252+
} else {
253+
$shipmentTrack->expects($this->once())
254+
->method('addData')
255+
->willReturnSelf();
256+
257+
$this->trackFactory->expects($this->once())
258+
->method('create')
259+
->willReturn($shipmentTrack);
260+
261+
$shipment->expects($this->once())
262+
->method('addTrack')
263+
->with($shipmentTrack);
264+
}
265+
}
266+
267+
$this->assertEquals($shipment, $this->subject->create($order, ['1' => 0.5], $tracks));
268+
}
269+
174270
/**
175271
* @return array
176272
*/

0 commit comments

Comments
 (0)