ShipmentAddTrackTest.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Service\V1;
  7. use Magento\Framework\Webapi\Rest\Request;
  8. use Magento\Sales\Api\Data\ShipmentTrackInterface;
  9. use Magento\Sales\Model\Order\Shipment\Track;
  10. use Magento\Sales\Model\ResourceModel\Order\Shipment\Collection;
  11. use Magento\TestFramework\Helper\Bootstrap;
  12. use Magento\TestFramework\TestCase\WebapiAbstract;
  13. /**
  14. * Class ShipmentAddTrackTest
  15. */
  16. class ShipmentAddTrackTest extends WebapiAbstract
  17. {
  18. /**
  19. * Service read name
  20. */
  21. const SERVICE_READ_NAME = 'salesShipmentTrackRepositoryV1';
  22. /**
  23. * Service version
  24. */
  25. const SERVICE_VERSION = 'V1';
  26. /**
  27. * Shipment increment id
  28. */
  29. const SHIPMENT_INCREMENT_ID = '100000001';
  30. /**
  31. * @var \Magento\Framework\ObjectManagerInterface
  32. */
  33. private $objectManager;
  34. /**
  35. * @inheritdoc
  36. */
  37. protected function setUp()
  38. {
  39. $this->objectManager = Bootstrap::getObjectManager();
  40. }
  41. /**
  42. * Creates shipment track item.
  43. *
  44. * @magentoApiDataFixture Magento/Sales/_files/shipment.php
  45. */
  46. public function testShipmentAddTrack()
  47. {
  48. $shipmentCollection = $this->objectManager->get(Collection::class);
  49. /** @var \Magento\Sales\Model\Order\Shipment $shipment */
  50. $shipment = $shipmentCollection->getFirstItem();
  51. $trackData = [
  52. ShipmentTrackInterface::ENTITY_ID => null,
  53. ShipmentTrackInterface::ORDER_ID => $shipment->getOrderId(),
  54. ShipmentTrackInterface::PARENT_ID => $shipment->getId(),
  55. ShipmentTrackInterface::WEIGHT => 20,
  56. ShipmentTrackInterface::QTY => 5,
  57. ShipmentTrackInterface::TRACK_NUMBER => 2,
  58. ShipmentTrackInterface::DESCRIPTION => 'Shipment description',
  59. ShipmentTrackInterface::TITLE => 'Shipment title',
  60. ShipmentTrackInterface::CARRIER_CODE => Track::CUSTOM_CARRIER_CODE,
  61. ];
  62. $result = $this->_webApiCall($this->getServiceInfo(), ['entity' => $trackData]);
  63. self::assertNotEmpty($result);
  64. self::assertNotEmpty($result[ShipmentTrackInterface::ENTITY_ID]);
  65. self::assertEquals($shipment->getId(), $result[ShipmentTrackInterface::PARENT_ID]);
  66. }
  67. /**
  68. * Returns details about API endpoints and services.
  69. *
  70. * @return array
  71. */
  72. private function getServiceInfo()
  73. {
  74. return [
  75. 'rest' => [
  76. 'resourcePath' => '/V1/shipment/track',
  77. 'httpMethod' => Request::HTTP_METHOD_POST,
  78. ],
  79. 'soap' => [
  80. 'service' => self::SERVICE_READ_NAME,
  81. 'serviceVersion' => self::SERVICE_VERSION,
  82. 'operation' => self::SERVICE_READ_NAME . 'save',
  83. ],
  84. ];
  85. }
  86. }