10 use Magento\Sales\Api\Data\ShipmentTrackCreationInterfaceFactory;
11 use Magento\Sales\Api\Data\ShipmentItemCreationInterfaceFactory;
24 private $objectManagerMock;
29 private $registryMock;
34 private $messageManagerMock;
39 private $shipmentRepositoryMock;
44 private $documentFactoryMock;
49 private $trackFactoryMock;
54 private $itemFactoryMock;
59 private $orderRepositoryMock;
69 $this->shipmentRepositoryMock = $this->getMockBuilder(\
Magento\Sales\Model\Order\ShipmentRepository::class)
70 ->disableOriginalConstructor()
73 $this->registryMock = $this->getMockBuilder(\
Magento\Framework\Registry::class)
74 ->disableOriginalConstructor()
77 $this->trackFactoryMock = $this->getMockBuilder(ShipmentTrackCreationInterfaceFactory::class)
78 ->disableOriginalConstructor()
79 ->setMethods([
'create'])
81 $this->messageManagerMock = $this->getMockBuilder(\
Magento\Framework\Message\Manager::class)
82 ->disableOriginalConstructor()
85 $this->orderRepositoryMock = $this->getMockBuilder(\
Magento\Sales\Api\OrderRepositoryInterface::class)
86 ->disableOriginalConstructor()
89 $this->itemFactoryMock = $this->getMockBuilder(ShipmentItemCreationInterfaceFactory::class)
90 ->disableOriginalConstructor()
91 ->setMethods([
'create'])
93 $this->documentFactoryMock = $this->getMockBuilder(ShipmentDocumentFactory::class)
94 ->disableOriginalConstructor()
100 'shipment_id' => 1000065,
101 'shipment' => [
'items' => [1 => 1, 2 => 2]],
103 [
'number' =>
'jds0395',
'title' =>
'DHL',
'carrier_code' =>
'dhl'],
104 [
'number' =>
'lsk984g',
'title' =>
'UPS',
'carrier_code' =>
'ups'],
108 $this->loader = $this->objectManagerMock->getObject(
109 ShipmentLoader::class,
111 'messageManager' => $this->messageManagerMock,
112 'registry' => $this->registryMock,
113 'shipmentRepository' => $this->shipmentRepositoryMock,
114 'orderRepository' => $this->orderRepositoryMock,
115 'documentFactory' => $this->documentFactoryMock,
116 'trackFactory' => $this->trackFactoryMock,
117 'itemFactory' => $this->itemFactoryMock,
125 $shipmentModelMock = $this->getMockBuilder(\
Magento\Sales\Model\Order\Shipment::class)
126 ->disableOriginalConstructor()
129 $this->shipmentRepositoryMock->expects($this->once())
131 ->with($this->loader->getShipmentId())
132 ->willReturn($shipmentModelMock);
133 $this->registryMock->expects($this->once())
135 ->with(
'current_shipment', $shipmentModelMock);
136 $this->assertEquals($shipmentModelMock, $this->loader->load());
141 $this->loader->unsetData(
'shipment_id');
142 $orderMock = $this->getMockBuilder(\
Magento\Sales\Model\Order::class)
143 ->disableOriginalConstructor()
144 ->setMethods([
'getForcedShipmentWithInvoice',
'getId',
'canShip'])
146 $this->orderRepositoryMock->expects($this->once())
148 ->will($this->returnValue($orderMock));
149 $orderMock->expects($this->once())
151 ->will($this->returnValue($this->loader->getOrderId()));
152 $orderMock->expects($this->any())
153 ->method(
'getForcedShipmentWithInvoice')
154 ->will($this->returnValue(
false));
155 $orderMock->expects($this->once())
157 ->will($this->returnValue(
true));
158 $shipmentModelMock = $this->getMockBuilder(\
Magento\Sales\Model\Order\Shipment::class)
159 ->disableOriginalConstructor()
162 $trackMock = $this->getMockBuilder(ShipmentTrackCreationInterface::class)
163 ->disableOriginalConstructor()
164 ->setMethods([
'setCarrierCode',
'setTrackNumber',
'setTitle'])
165 ->getMockForAbstractClass();
166 $this->trackFactoryMock->expects($this->any())
168 ->will($this->returnValue($trackMock));
169 $shipmentModelMock->expects($this->any())
171 ->with($this->equalTo($trackMock))
172 ->will($this->returnSelf());
173 $this->registryMock->expects($this->once())
175 ->with(
'current_shipment', $shipmentModelMock);
176 $itemMock = $this->getMockBuilder(ShipmentItemCreationInterface::class)
177 ->disableOriginalConstructor()
178 ->getMockForAbstractClass();
179 $this->itemFactoryMock->expects($this->any())
181 ->will($this->returnValue($itemMock));
182 $this->documentFactoryMock->expects($this->once())->method(
'create')->willReturn($shipmentModelMock);
184 $this->assertEquals($shipmentModelMock, $this->loader->load());