ShipmentRemoveTrackTest.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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\Api\SearchCriteriaBuilder;
  8. use Magento\Framework\Webapi\Rest\Request;
  9. use Magento\Sales\Api\Data\ShipmentTrackInterface;
  10. use Magento\Sales\Api\ShipmentTrackRepositoryInterface;
  11. use Magento\Sales\Model\Order\Shipment\Track;
  12. use Magento\Sales\Model\Order\Shipment\TrackFactory;
  13. use Magento\Sales\Model\ResourceModel\Order\Shipment\Collection;
  14. use Magento\TestFramework\Helper\Bootstrap;
  15. use Magento\TestFramework\TestCase\WebapiAbstract;
  16. /**
  17. * Class ShipmentRemoveTrackTest
  18. */
  19. class ShipmentRemoveTrackTest extends WebapiAbstract
  20. {
  21. /**
  22. * Service read name
  23. */
  24. const SERVICE_READ_NAME = 'salesShipmentTrackRepositoryV1';
  25. /**
  26. * Service version
  27. */
  28. const SERVICE_VERSION = 'V1';
  29. /**
  30. * Shipment increment id
  31. */
  32. const SHIPMENT_INCREMENT_ID = '100000001';
  33. /**
  34. * @var \Magento\Framework\ObjectManagerInterface
  35. */
  36. private $objectManager;
  37. /**
  38. * @inheritdoc
  39. */
  40. protected function setUp()
  41. {
  42. $this->objectManager = Bootstrap::getObjectManager();
  43. }
  44. /**
  45. * Test shipment remove track service
  46. *
  47. * @magentoApiDataFixture Magento/Sales/_files/shipment.php
  48. */
  49. public function testShipmentRemoveTrack()
  50. {
  51. $shipmentCollection = $this->objectManager->get(Collection::class);
  52. /** @var \Magento\Sales\Model\Order\Shipment $shipment */
  53. $shipment = $shipmentCollection->getFirstItem();
  54. $trackEntity = $this->objectManager->get(TrackFactory::class)
  55. ->create(
  56. [
  57. 'data' => [
  58. ShipmentTrackInterface::ENTITY_ID => null,
  59. ShipmentTrackInterface::ORDER_ID => $shipment->getOrderId(),
  60. ShipmentTrackInterface::PARENT_ID => $shipment->getId(),
  61. ShipmentTrackInterface::WEIGHT => 20,
  62. ShipmentTrackInterface::QTY => 5,
  63. ShipmentTrackInterface::TRACK_NUMBER => 2,
  64. ShipmentTrackInterface::DESCRIPTION => 'Shipment description',
  65. ShipmentTrackInterface::TITLE => 'Shipment title',
  66. ShipmentTrackInterface::CARRIER_CODE => Track::CUSTOM_CARRIER_CODE,
  67. ]
  68. ]
  69. );
  70. /** @var ShipmentTrackInterface $trackEntity */
  71. $trackEntity = $this->objectManager->get(ShipmentTrackRepositoryInterface::class)
  72. ->save($trackEntity);
  73. $serviceInfo = [
  74. 'rest' => [
  75. 'resourcePath' => '/V1/shipment/track/' . $trackEntity->getEntityId(),
  76. 'httpMethod' => Request::HTTP_METHOD_DELETE,
  77. ],
  78. 'soap' => [
  79. 'service' => self::SERVICE_READ_NAME,
  80. 'serviceVersion' => self::SERVICE_VERSION,
  81. 'operation' => self::SERVICE_READ_NAME . 'deleteById',
  82. ],
  83. ];
  84. $result = $this->_webApiCall($serviceInfo, ['id' => $trackEntity->getEntityId()]);
  85. self::assertTrue($result);
  86. $this->assertNoAvailableTrackItems($shipment->getId());
  87. }
  88. /**
  89. * Performs assertion for provided shipment.
  90. *
  91. * @param int $shipmentId
  92. * @return void
  93. */
  94. private function assertNoAvailableTrackItems($shipmentId)
  95. {
  96. /** @var SearchCriteriaBuilder $searchCriteriaBuilder */
  97. $searchCriteriaBuilder = $this->objectManager->get(SearchCriteriaBuilder::class);
  98. $searchCriteria = $searchCriteriaBuilder->addFilter(ShipmentTrackInterface::PARENT_ID, $shipmentId)
  99. ->create();
  100. $items = $this->objectManager->get(ShipmentTrackRepositoryInterface::class)
  101. ->getList($searchCriteria)
  102. ->getItems();
  103. self::assertEmpty($items);
  104. }
  105. }