/** * @param OrderInterface $order * * @throws UnresolvedDefaultShippingMethodException * @return ShipmentInterface */ private function getOrderShipment(OrderInterface $order) { if ($order->getShipment()) { return $order->getShipment(); } /** @var ShipmentInterface $shipment */ $shipment = $this->shipmentFactory->createNew(); $order->setShipment($shipment); $shipment->setMethod($this->defaultShippingMethodResolver->getDefaultShippingMethod($shipment)); return $shipment; }
/** * @param OrderInterface $order * * @return ShipmentInterface */ private function getOrderShipment(OrderInterface $order) { if ($order->hasShipments()) { return $order->getShipments()->first(); } try { /** @var ShipmentInterface $shipment */ $shipment = $this->shipmentFactory->createNew(); $shipment->setOrder($order); $shipment->setMethod($this->defaultShippingMethodResolver->getDefaultShippingMethod($shipment)); $order->addShipment($shipment); return $shipment; } catch (UnresolvedDefaultShippingMethodException $exception) { return null; } }
function it_creates_a_single_shipment_with_default_shipping_method_and_assigns_all_units_to_it(DefaultShippingMethodResolverInterface $defaultShippingMethodResolver, FactoryInterface $shipmentFactory, OrderInterface $order, OrderItemUnitInterface $itemUnit1, OrderItemUnitInterface $itemUnit2, ShipmentInterface $shipment, ShippingMethodInterface $defaultShippingMethod) { $defaultShippingMethodResolver->getDefaultShippingMethod($shipment)->willReturn($defaultShippingMethod); $shipmentFactory->createNew()->willReturn($shipment); $order->hasShipments()->willReturn(false); $order->getItemUnits()->willReturn([$itemUnit1, $itemUnit2]); $shipment->setMethod($defaultShippingMethod)->shouldBeCalled(); $shipment->addUnit($itemUnit1)->shouldBeCalled(); $shipment->addUnit($itemUnit2)->shouldBeCalled(); $order->addShipment($shipment)->shouldBeCalled(); $this->processOrderShipment($order); }