objectManager = Bootstrap::getObjectManager(); } /** * Creates shipment track item. * * @magentoApiDataFixture Magento/Sales/_files/shipment.php */ public function testShipmentAddTrack() { $shipmentCollection = $this->objectManager->get(Collection::class); /** @var \Magento\Sales\Model\Order\Shipment $shipment */ $shipment = $shipmentCollection->getFirstItem(); $trackData = [ ShipmentTrackInterface::ENTITY_ID => null, ShipmentTrackInterface::ORDER_ID => $shipment->getOrderId(), ShipmentTrackInterface::PARENT_ID => $shipment->getId(), ShipmentTrackInterface::WEIGHT => 20, ShipmentTrackInterface::QTY => 5, ShipmentTrackInterface::TRACK_NUMBER => 2, ShipmentTrackInterface::DESCRIPTION => 'Shipment description', ShipmentTrackInterface::TITLE => 'Shipment title', ShipmentTrackInterface::CARRIER_CODE => Track::CUSTOM_CARRIER_CODE, ]; $result = $this->_webApiCall($this->getServiceInfo(), ['entity' => $trackData]); self::assertNotEmpty($result); self::assertNotEmpty($result[ShipmentTrackInterface::ENTITY_ID]); self::assertEquals($shipment->getId(), $result[ShipmentTrackInterface::PARENT_ID]); } /** * Returns details about API endpoints and services. * * @return array */ private function getServiceInfo() { return [ 'rest' => [ 'resourcePath' => '/V1/shipment/track', 'httpMethod' => Request::HTTP_METHOD_POST, ], 'soap' => [ 'service' => self::SERVICE_READ_NAME, 'serviceVersion' => self::SERVICE_VERSION, 'operation' => self::SERVICE_READ_NAME . 'save', ], ]; } }