SourceItemsDeleteTest.php 3.9 KB

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