objectManagerMock = new ObjectManager($this); $this->shipmentRepositoryMock = $this->getMockBuilder(\Magento\Sales\Model\Order\ShipmentRepository::class) ->disableOriginalConstructor() ->setMethods(['get']) ->getMock(); $this->registryMock = $this->getMockBuilder(\Magento\Framework\Registry::class) ->disableOriginalConstructor() ->setMethods([]) ->getMock(); $this->trackFactoryMock = $this->getMockBuilder(ShipmentTrackCreationInterfaceFactory::class) ->disableOriginalConstructor() ->setMethods(['create']) ->getMock(); $this->messageManagerMock = $this->getMockBuilder(\Magento\Framework\Message\Manager::class) ->disableOriginalConstructor() ->setMethods([]) ->getMock(); $this->orderRepositoryMock = $this->getMockBuilder(\Magento\Sales\Api\OrderRepositoryInterface::class) ->disableOriginalConstructor() ->setMethods([]) ->getMock(); $this->itemFactoryMock = $this->getMockBuilder(ShipmentItemCreationInterfaceFactory::class) ->disableOriginalConstructor() ->setMethods(['create']) ->getMock(); $this->documentFactoryMock = $this->getMockBuilder(ShipmentDocumentFactory::class) ->disableOriginalConstructor() ->setMethods([]) ->getMock(); $data = [ 'order_id' => 100032, 'shipment_id' => 1000065, 'shipment' => ['items' => [1 => 1, 2 => 2]], 'tracking' => [ ['number' => 'jds0395', 'title' => 'DHL', 'carrier_code' => 'dhl'], ['number' => 'lsk984g', 'title' => 'UPS', 'carrier_code' => 'ups'], ], ]; $this->loader = $this->objectManagerMock->getObject( ShipmentLoader::class, [ 'messageManager' => $this->messageManagerMock, 'registry' => $this->registryMock, 'shipmentRepository' => $this->shipmentRepositoryMock, 'orderRepository' => $this->orderRepositoryMock, 'documentFactory' => $this->documentFactoryMock, 'trackFactory' => $this->trackFactoryMock, 'itemFactory' => $this->itemFactoryMock, 'data' => $data ] ); } public function testLoadShipmentId() { $shipmentModelMock = $this->getMockBuilder(\Magento\Sales\Model\Order\Shipment::class) ->disableOriginalConstructor() ->setMethods([]) ->getMock(); $this->shipmentRepositoryMock->expects($this->once()) ->method('get') ->with($this->loader->getShipmentId()) ->willReturn($shipmentModelMock); $this->registryMock->expects($this->once()) ->method('register') ->with('current_shipment', $shipmentModelMock); $this->assertEquals($shipmentModelMock, $this->loader->load()); } public function testLoadOrderId() { $this->loader->unsetData('shipment_id'); $orderMock = $this->getMockBuilder(\Magento\Sales\Model\Order::class) ->disableOriginalConstructor() ->setMethods(['getForcedShipmentWithInvoice', 'getId', 'canShip']) ->getMock(); $this->orderRepositoryMock->expects($this->once()) ->method('get') ->will($this->returnValue($orderMock)); $orderMock->expects($this->once()) ->method('getId') ->will($this->returnValue($this->loader->getOrderId())); $orderMock->expects($this->any()) ->method('getForcedShipmentWithInvoice') ->will($this->returnValue(false)); $orderMock->expects($this->once()) ->method('canShip') ->will($this->returnValue(true)); $shipmentModelMock = $this->getMockBuilder(\Magento\Sales\Model\Order\Shipment::class) ->disableOriginalConstructor() ->setMethods([]) ->getMock(); $trackMock = $this->getMockBuilder(ShipmentTrackCreationInterface::class) ->disableOriginalConstructor() ->setMethods(['setCarrierCode', 'setTrackNumber', 'setTitle']) ->getMockForAbstractClass(); $this->trackFactoryMock->expects($this->any()) ->method('create') ->will($this->returnValue($trackMock)); $shipmentModelMock->expects($this->any()) ->method('addTrack') ->with($this->equalTo($trackMock)) ->will($this->returnSelf()); $this->registryMock->expects($this->once()) ->method('register') ->with('current_shipment', $shipmentModelMock); $itemMock = $this->getMockBuilder(ShipmentItemCreationInterface::class) ->disableOriginalConstructor() ->getMockForAbstractClass(); $this->itemFactoryMock->expects($this->any()) ->method('create') ->will($this->returnValue($itemMock)); $this->documentFactoryMock->expects($this->once())->method('create')->willReturn($shipmentModelMock); $this->assertEquals($shipmentModelMock, $this->loader->load()); } }