ShipmentGetTest.php 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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\ExtensibleDataInterface;
  8. use Magento\Framework\Api\SimpleDataObjectConverter;
  9. use Magento\TestFramework\TestCase\WebapiAbstract;
  10. /**
  11. * Class ShipmentGetTest
  12. */
  13. class ShipmentGetTest extends WebapiAbstract
  14. {
  15. const RESOURCE_PATH = '/V1/shipment';
  16. const SERVICE_READ_NAME = 'salesShipmentRepositoryV1';
  17. const SERVICE_VERSION = 'V1';
  18. /**
  19. * @var \Magento\Framework\ObjectManagerInterface
  20. */
  21. protected $objectManager;
  22. protected function setUp()
  23. {
  24. $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  25. }
  26. /**
  27. * @magentoApiDataFixture Magento/Sales/_files/shipment.php
  28. */
  29. public function testShipmentGet()
  30. {
  31. /** @var \Magento\Sales\Model\Order\Shipment $shipment */
  32. $shipmentCollection = $this->objectManager->get(
  33. \Magento\Sales\Model\ResourceModel\Order\Shipment\Collection::class
  34. );
  35. $shipment = $shipmentCollection->getFirstItem();
  36. $shipment->load($shipment->getId());
  37. $serviceInfo = [
  38. 'rest' => [
  39. 'resourcePath' => self::RESOURCE_PATH . '/' . $shipment->getId(),
  40. 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
  41. ],
  42. 'soap' => [
  43. 'service' => self::SERVICE_READ_NAME,
  44. 'serviceVersion' => self::SERVICE_VERSION,
  45. 'operation' => self::SERVICE_READ_NAME . 'get',
  46. ],
  47. ];
  48. $result = $this->_webApiCall($serviceInfo, ['id' => $shipment->getId()]);
  49. $data = $result;
  50. $this->assertArrayHasKey('items', $result);
  51. $this->assertArrayHasKey('tracks', $result);
  52. unset($data['items']);
  53. unset($data['packages']);
  54. unset($data['tracks']);
  55. foreach ($data as $key => $value) {
  56. if (!empty($value)) {
  57. if ($key === ExtensibleDataInterface::EXTENSION_ATTRIBUTES_KEY) {
  58. foreach ($value as $extensionAttributeKey => $extensionAttributeValue) {
  59. $methodName = 'get' .
  60. SimpleDataObjectConverter::snakeCaseToUpperCamelCase($extensionAttributeKey);
  61. $this->assertEquals(
  62. $shipment->getExtensionAttributes()->$methodName(),
  63. $extensionAttributeValue
  64. );
  65. }
  66. } else {
  67. $this->assertEquals($shipment->getData($key), $value, $key);
  68. }
  69. }
  70. }
  71. $shipmentItem = $this->objectManager->get(\Magento\Sales\Model\Order\Shipment\Item::class);
  72. foreach ($result['items'] as $item) {
  73. $shipmentItem->load($item['entity_id']);
  74. foreach ($item as $key => $value) {
  75. $this->assertEquals($shipmentItem->getData($key), $value, $key);
  76. }
  77. }
  78. $shipmentTrack = $this->objectManager->get(\Magento\Sales\Model\Order\Shipment\Track::class);
  79. foreach ($result['tracks'] as $item) {
  80. $shipmentTrack->load($item['entity_id']);
  81. foreach ($item as $key => $value) {
  82. $this->assertEquals($shipmentTrack->getData($key), $value, $key);
  83. }
  84. }
  85. }
  86. }