StockSourceLinksDeleteTest.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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 StockSourceLinksDeleteTest extends WebapiAbstract
  14. {
  15. /**#@+
  16. * Service constants
  17. */
  18. const RESOURCE_PATH = '/V1/inventory/stock-source-links';
  19. const RESOURCE_DELETE_PATH = '/V1/inventory/stock-source-links-delete';
  20. const SERVICE_NAME_SAVE = 'inventoryApiStockSourceLinksSaveV1';
  21. const SERVICE_NAME_DELETE = 'inventoryApiStockSourceLinksDeleteV1';
  22. const SERVICE_NAME_GET_LIST = 'inventoryApiGetStockSourceLinksV1';
  23. /**#@-*/
  24. /**
  25. * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/sources.php
  26. * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/stocks.php
  27. * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/stock_source_links.php
  28. */
  29. public function testExecute()
  30. {
  31. $linksForDelete = [
  32. [
  33. StockSourceLinkInterface::SOURCE_CODE => 'eu-1',
  34. StockSourceLinkInterface::STOCK_ID => 10,
  35. ],
  36. [
  37. StockSourceLinkInterface::SOURCE_CODE => 'eu-2',
  38. StockSourceLinkInterface::STOCK_ID => 10,
  39. ],
  40. ];
  41. $expectedLinksAfterDeleting = [
  42. [
  43. StockSourceLinkInterface::SOURCE_CODE => 'eu-3',
  44. StockSourceLinkInterface::STOCK_ID => 10,
  45. ],
  46. [
  47. StockSourceLinkInterface::SOURCE_CODE => 'eu-disabled',
  48. StockSourceLinkInterface::STOCK_ID => 10,
  49. ],
  50. ];
  51. $serviceInfo = [
  52. 'rest' => [
  53. 'resourcePath' => self::RESOURCE_DELETE_PATH . '?'
  54. . http_build_query(['links' => $linksForDelete]),
  55. 'httpMethod' => Request::HTTP_METHOD_POST,
  56. ],
  57. 'soap' => [
  58. 'service' => self::SERVICE_NAME_DELETE,
  59. 'operation' => self::SERVICE_NAME_DELETE . 'Execute',
  60. ],
  61. ];
  62. (TESTS_WEB_API_ADAPTER === self::ADAPTER_REST)
  63. ? $this->_webApiCall($serviceInfo)
  64. : $this->_webApiCall($serviceInfo, ['links' => $linksForDelete]);
  65. $actualData = $this->getStockSourceLinks();
  66. self::assertEquals(2, $actualData['total_count']);
  67. AssertArrayContains::assert($expectedLinksAfterDeleting, $actualData['items']);
  68. }
  69. /**
  70. * @return array
  71. */
  72. private function getStockSourceLinks(): array
  73. {
  74. $requestData = [
  75. 'searchCriteria' => [
  76. SearchCriteria::FILTER_GROUPS => [
  77. [
  78. 'filters' => [
  79. [
  80. 'field' => StockSourceLinkInterface::STOCK_ID,
  81. 'value' => 10,
  82. 'condition_type' => 'eq',
  83. ],
  84. ],
  85. ],
  86. ],
  87. ],
  88. ];
  89. $serviceInfo = [
  90. 'rest' => [
  91. 'resourcePath' => self::RESOURCE_PATH . '?' . http_build_query($requestData),
  92. 'httpMethod' => Request::HTTP_METHOD_GET,
  93. ],
  94. 'soap' => [
  95. 'service' => self::SERVICE_NAME_GET_LIST,
  96. 'operation' => self::SERVICE_NAME_GET_LIST . 'Execute',
  97. ],
  98. ];
  99. return (TESTS_WEB_API_ADAPTER === self::ADAPTER_REST)
  100. ? $this->_webApiCall($serviceInfo)
  101. : $this->_webApiCall($serviceInfo, $requestData);
  102. }
  103. }