/** * @covers \Magento\Shipping\Model\Shipping\LabelGenerator * @param array $info * @dataProvider labelInfoDataProvider */ public function testAddTrackingNumbersToShipment(array $info) { $order = $this->getMockBuilder('Magento\\Sales\\Model\\Order')->disableOriginalConstructor()->getMock(); $order->expects(static::once())->method('getShippingMethod')->with(true)->willReturn($this->getShippingMethodMock()); /** * @var $shipmentMock \Magento\Sales\Model\Order\Shipment|\PHPUnit_Framework_MockObject_MockObject */ $shipmentMock = $this->getMockBuilder('Magento\\Sales\\Model\\Order\\Shipment')->disableOriginalConstructor()->getMock(); $shipmentMock->expects(static::once())->method('getOrder')->willReturn($order); $this->carrierFactory->expects(static::once())->method('create')->with(self::CARRIER_CODE)->willReturn($this->getCarrierMock()); $labelsMock = $this->getMockBuilder('\\Magento\\Shipping\\Model\\Shipping\\Labels')->disableOriginalConstructor()->getMock(); $labelsMock->expects(static::once())->method('requestToShipment')->with($shipmentMock)->willReturn($this->getResponseMock($info)); $this->labelsFactory->expects(static::once())->method('create')->willReturn($labelsMock); $this->filesystem->expects(static::once())->method('getDirectoryWrite')->willReturn($this->getMock('Magento\\Framework\\Filesystem\\Directory\\WriteInterface')); $this->scopeConfig->expects(static::once())->method('getValue')->with('carriers/' . self::CARRIER_CODE . '/title', ScopeInterface::SCOPE_STORE, null)->willReturn(self::CARRIER_TITLE); $this->labelsFactory->expects(static::once())->method('create')->willReturn($labelsMock); $trackMock = $this->getMockBuilder('Magento\\Sales\\Model\\Order\\Shipment\\Track')->setMethods(['setNumber', 'setCarrierCode', 'setTitle'])->disableOriginalConstructor()->getMock(); $i = 0; $trackingNumbers = is_array($info['tracking_number']) ? $info['tracking_number'] : [$info['tracking_number']]; foreach ($trackingNumbers as $trackingNumber) { $trackMock->expects(static::at($i++))->method('setNumber')->with($trackingNumber)->willReturnSelf(); $trackMock->expects(static::at($i++))->method('setCarrierCode')->with(self::CARRIER_CODE)->willReturnSelf(); $trackMock->expects(static::at($i++))->method('setTitle')->with(self::CARRIER_TITLE)->willReturnSelf(); } $this->trackFactory->expects(static::any())->method('create')->willReturn($trackMock); /** * @var $requestMock \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject */ $requestMock = $this->getMock('Magento\\Framework\\App\\RequestInterface'); $this->labelGenerator->create($shipmentMock, $requestMock); }
/** * @param array|null $tracks * @dataProvider createDataProvider * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function testCreate($tracks) { $orderItem = $this->getMock('Magento\\Sales\\Model\\Order\\Item', ['getId', 'getQtyOrdered'], [], '', false); $orderItem->expects($this->any())->method('getId')->willReturn(1); $orderItem->expects($this->any())->method('getQtyOrdered')->willReturn(5); $shipmentItem = $this->getMock('Magento\\Sales\\Model\\Order\\Shipment\\Item', ['setQty'], [], '', false); $shipmentItem->expects($this->once())->method('setQty')->with(5); $order = $this->getMock('Magento\\Sales\\Model\\Order', ['getAllItems'], [], '', false); $order->expects($this->any())->method('getAllItems')->willReturn([$orderItem]); $shipment = $this->getMock('Magento\\Sales\\Model\\Order\\Shipment', ['addItem', 'setTotalQty', 'addTrack'], [], '', false); $shipment->expects($this->once())->method('addItem')->with($shipmentItem); $shipment->expects($this->once())->method('setTotalQty')->with(5)->willReturn($shipment); $this->converter->expects($this->any())->method('toShipment')->with($order)->willReturn($shipment); $this->converter->expects($this->any())->method('itemToShipmentItem')->with($orderItem)->willReturn($shipmentItem); if ($tracks) { $shipmentTrack = $this->getMock('Magento\\Sales\\Model\\Order\\Shipment\\Track', ['addData'], [], '', false); if (empty($tracks[0]['number'])) { $shipmentTrack->expects($this->never())->method('addData'); $this->trackFactory->expects($this->never())->method('create'); $shipment->expects($this->never())->method('addTrack'); $this->setExpectedException('Magento\\Framework\\Exception\\LocalizedException'); } else { $shipmentTrack->expects($this->once())->method('addData')->willReturnSelf(); $this->trackFactory->expects($this->once())->method('create')->willReturn($shipmentTrack); $shipment->expects($this->once())->method('addTrack')->with($shipmentTrack); } } $this->assertEquals($shipment, $this->subject->create($order, ['1' => 5], $tracks)); }