StockSourceLinksSaveTest.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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\StockSourceLink;
  8. use Magento\Framework\Api\SearchCriteria;
  9. use Magento\Framework\Webapi\Rest\Request;
  10. use Magento\InventoryApi\Api\Data\StockSourceLinkInterface;
  11. use Magento\TestFramework\Assert\AssertArrayContains;
  12. use Magento\TestFramework\TestCase\WebapiAbstract;
  13. class StockSourceLinksSaveTest extends WebapiAbstract
  14. {
  15. /**#@+
  16. * Service constants
  17. */
  18. const RESOURCE_PATH = '/V1/inventory/stock-source-links';
  19. const SERVICE_NAME_SAVE = 'inventoryApiStockSourceLinksSaveV1';
  20. const SERVICE_NAME_DELETE = 'inventoryApiStockSourceLinksDeleteV1';
  21. const SERVICE_NAME_GET_LIST = 'inventoryApiGetStockSourceLinksV1';
  22. /**#@-*/
  23. /**
  24. * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/sources.php
  25. * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/stocks.php
  26. */
  27. public function testExecute()
  28. {
  29. $links = [
  30. [
  31. StockSourceLinkInterface::SOURCE_CODE => 'eu-1',
  32. StockSourceLinkInterface::STOCK_ID => 10,
  33. StockSourceLinkInterface::PRIORITY => 1,
  34. ],
  35. [
  36. StockSourceLinkInterface::SOURCE_CODE => 'eu-2',
  37. StockSourceLinkInterface::STOCK_ID => 10,
  38. StockSourceLinkInterface::PRIORITY => 2,
  39. ],
  40. ];
  41. $serviceInfo = [
  42. 'rest' => [
  43. 'resourcePath' => self::RESOURCE_PATH,
  44. 'httpMethod' => Request::HTTP_METHOD_POST,
  45. ],
  46. 'soap' => [
  47. 'service' => self::SERVICE_NAME_SAVE,
  48. 'operation' => self::SERVICE_NAME_SAVE . 'Execute',
  49. ],
  50. ];
  51. $this->_webApiCall($serviceInfo, ['links' => $links]);
  52. $actualData = $this->getStockSourceLinks();
  53. self::assertEquals(2, $actualData['total_count']);
  54. AssertArrayContains::assert($links, $actualData['items']);
  55. }
  56. protected function tearDown()
  57. {
  58. $links = [
  59. [
  60. StockSourceLinkInterface::SOURCE_CODE => 'eu-1',
  61. StockSourceLinkInterface::STOCK_ID => 10,
  62. StockSourceLinkInterface::PRIORITY => 1,
  63. ],
  64. [
  65. StockSourceLinkInterface::SOURCE_CODE => 'eu-2',
  66. StockSourceLinkInterface::STOCK_ID => 10,
  67. StockSourceLinkInterface::PRIORITY => 2,
  68. ],
  69. ];
  70. $serviceInfo = [
  71. 'rest' => [
  72. 'resourcePath' => self::RESOURCE_PATH . '?'
  73. . http_build_query(['links' => $links]),
  74. 'httpMethod' => Request::HTTP_METHOD_POST,
  75. ],
  76. 'soap' => [
  77. 'service' => self::SERVICE_NAME_DELETE,
  78. 'operation' => self::SERVICE_NAME_DELETE . 'Execute',
  79. ],
  80. ];
  81. (TESTS_WEB_API_ADAPTER == self::ADAPTER_REST)
  82. ? $this->_webApiCall($serviceInfo)
  83. : $this->_webApiCall($serviceInfo, ['links' => $links]);
  84. parent::tearDown();
  85. }
  86. /**
  87. * @return array
  88. */
  89. private function getStockSourceLinks(): array
  90. {
  91. $requestData = [
  92. 'searchCriteria' => [
  93. SearchCriteria::FILTER_GROUPS => [
  94. [
  95. 'filters' => [
  96. [
  97. 'field' => StockSourceLinkInterface::STOCK_ID,
  98. 'value' => 10,
  99. 'condition_type' => 'eq',
  100. ],
  101. ],
  102. ],
  103. ],
  104. ],
  105. ];
  106. $serviceInfo = [
  107. 'rest' => [
  108. 'resourcePath' => self::RESOURCE_PATH . '?' . http_build_query($requestData),
  109. 'httpMethod' => Request::HTTP_METHOD_GET,
  110. ],
  111. 'soap' => [
  112. 'service' => self::SERVICE_NAME_GET_LIST,
  113. 'operation' => self::SERVICE_NAME_GET_LIST . 'Execute',
  114. ],
  115. ];
  116. return (TESTS_WEB_API_ADAPTER === self::ADAPTER_REST)
  117. ? $this->_webApiCall($serviceInfo)
  118. : $this->_webApiCall($serviceInfo, $requestData);
  119. }
  120. }