SaveTest.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\InventoryApi\Test\Api\SourceItemsSave;
  8. use Magento\Framework\Api\SearchCriteria;
  9. use Magento\Framework\Webapi\Rest\Request;
  10. use Magento\InventoryApi\Api\Data\SourceItemInterface;
  11. use Magento\TestFramework\Assert\AssertArrayContains;
  12. use Magento\TestFramework\TestCase\WebapiAbstract;
  13. class SaveTest extends WebapiAbstract
  14. {
  15. /**#@+
  16. * Service constants
  17. */
  18. const RESOURCE_PATH = '/V1/inventory/source-items';
  19. const SERVICE_NAME_SAVE = 'inventoryApiSourceItemsSaveV1';
  20. const SERVICE_NAME_DELETE = 'inventoryApiSourceItemsDeleteV1';
  21. /**#@-*/
  22. /**
  23. * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/products.php
  24. * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/sources.php
  25. */
  26. public function testExecute()
  27. {
  28. $sourceItems = [
  29. [
  30. SourceItemInterface::SOURCE_CODE => 'eu-1',
  31. SourceItemInterface::SKU => 'SKU-1',
  32. SourceItemInterface::QUANTITY => 5.5,
  33. SourceItemInterface::STATUS => SourceItemInterface::STATUS_IN_STOCK,
  34. ],
  35. [
  36. SourceItemInterface::SOURCE_CODE => 'eu-2',
  37. SourceItemInterface::SKU => 'SKU-1',
  38. SourceItemInterface::QUANTITY => 3,
  39. SourceItemInterface::STATUS => SourceItemInterface::STATUS_IN_STOCK,
  40. ],
  41. ];
  42. $serviceInfo = [
  43. 'rest' => [
  44. 'resourcePath' => self::RESOURCE_PATH,
  45. 'httpMethod' => Request::HTTP_METHOD_POST,
  46. ],
  47. 'soap' => [
  48. 'service' => self::SERVICE_NAME_SAVE,
  49. 'operation' => self::SERVICE_NAME_SAVE . 'Execute',
  50. ],
  51. ];
  52. $this->_webApiCall($serviceInfo, ['sourceItems' => $sourceItems]);
  53. $actualData = $this->getSourceItems();
  54. self::assertEquals(2, $actualData['total_count']);
  55. AssertArrayContains::assert($sourceItems, $actualData['items']);
  56. }
  57. protected function tearDown()
  58. {
  59. $sourceItems = [
  60. [
  61. SourceItemInterface::SOURCE_CODE => 'eu-1',
  62. SourceItemInterface::SKU => 'SKU-1',
  63. SourceItemInterface::QUANTITY => 5.5,
  64. SourceItemInterface::STATUS => SourceItemInterface::STATUS_IN_STOCK,
  65. ],
  66. [
  67. SourceItemInterface::SOURCE_CODE => 'eu-2',
  68. SourceItemInterface::SKU => 'SKU-1',
  69. SourceItemInterface::QUANTITY => 3,
  70. SourceItemInterface::STATUS => SourceItemInterface::STATUS_IN_STOCK,
  71. ],
  72. ];
  73. $serviceInfo = [
  74. 'rest' => [
  75. 'resourcePath' => self::RESOURCE_PATH . '?'
  76. . http_build_query(['sourceItems' => $sourceItems]),
  77. 'httpMethod' => Request::HTTP_METHOD_POST,
  78. ],
  79. 'soap' => [
  80. 'service' => self::SERVICE_NAME_DELETE,
  81. 'operation' => self::SERVICE_NAME_DELETE . 'Execute',
  82. ],
  83. ];
  84. (TESTS_WEB_API_ADAPTER === self::ADAPTER_REST)
  85. ? $this->_webApiCall($serviceInfo)
  86. : $this->_webApiCall($serviceInfo, ['sourceItems' => $sourceItems]);
  87. parent::tearDown();
  88. }
  89. /**
  90. * @return array
  91. */
  92. private function getSourceItems(): array
  93. {
  94. $requestData = [
  95. 'searchCriteria' => [
  96. SearchCriteria::FILTER_GROUPS => [
  97. [
  98. 'filters' => [
  99. [
  100. 'field' => SourceItemInterface::SKU,
  101. 'value' => 'SKU-1',
  102. 'condition_type' => 'eq',
  103. ],
  104. ],
  105. ],
  106. ],
  107. SearchCriteria::PAGE_SIZE => 10
  108. ],
  109. ];
  110. $serviceInfo = [
  111. 'rest' => [
  112. 'resourcePath' => self::RESOURCE_PATH . '?' . http_build_query($requestData),
  113. 'httpMethod' => Request::HTTP_METHOD_GET,
  114. ],
  115. 'soap' => [
  116. 'service' => 'inventoryApiSourceItemRepositoryV1',
  117. 'operation' => 'inventoryApiSourceItemRepositoryV1GetList',
  118. ],
  119. ];
  120. return (TESTS_WEB_API_ADAPTER === self::ADAPTER_REST)
  121. ? $this->_webApiCall($serviceInfo)
  122. : $this->_webApiCall($serviceInfo, $requestData);
  123. }
  124. }