DeleteSourceItemsConfigurationTest.php 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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\InventoryLowQuantityNotificationApi\Test\Api;
  8. use Magento\InventoryApi\Api\Data\SourceItemInterface;
  9. use Magento\InventoryLowQuantityNotificationApi\Api\Data\SourceItemConfigurationInterface;
  10. use Magento\TestFramework\TestCase\WebapiAbstract;
  11. use Magento\Framework\Webapi\Rest\Request;
  12. class DeleteSourceItemsConfigurationTest extends WebapiAbstract
  13. {
  14. const RESOURCE_PATH = '/V1/inventory/low-quantity-notification';
  15. const RESOURCE_DELETE_PATH = '/V1/inventory/low-quantity-notifications-delete';
  16. const SERVICE_NAME_DELETE = 'inventoryLowQuantityNotificationApiDeleteSourceItemsConfigurationV1';
  17. const SERVICE_NAME_GET = 'inventoryLowQuantityNotificationApiGetSourceItemConfigurationV1';
  18. /**
  19. * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/sources.php
  20. * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/source_items.php
  21. * @magentoApiDataFixture ../../../../app/code/Magento/InventoryLowQuantityNotificationApi/Test/_files/source_item_configuration.php
  22. */
  23. public function testDeleteSourceItemConfiguration()
  24. {
  25. $sourceItemsForDelete = [
  26. [
  27. SourceItemInterface::SOURCE_CODE => 'eu-1',
  28. SourceItemInterface::SKU => 'SKU-1',
  29. ],
  30. [
  31. SourceItemInterface::SOURCE_CODE => 'eu-2',
  32. SourceItemInterface::SKU => 'SKU-3',
  33. ],
  34. ];
  35. $serviceInfo = [
  36. 'rest' => [
  37. 'resourcePath' => self::RESOURCE_DELETE_PATH,
  38. 'httpMethod' => Request::HTTP_METHOD_POST,
  39. ],
  40. 'soap' => [
  41. 'service' => self::SERVICE_NAME_DELETE,
  42. 'operation' => self::SERVICE_NAME_DELETE . 'Execute',
  43. ],
  44. ];
  45. $this->_webApiCall($serviceInfo, ['sourceItems' => $sourceItemsForDelete]);
  46. $sourceItemConfiguration = $this->getSourceItemConfiguration('eu-1', 'SKU-1');
  47. $defaultNotifyQtyValue = 1;
  48. self::assertEquals(
  49. $defaultNotifyQtyValue,
  50. $sourceItemConfiguration[SourceItemConfigurationInterface::INVENTORY_NOTIFY_QTY]
  51. );
  52. $sourceItemConfiguration = $this->getSourceItemConfiguration('eu-2', 'SKU-3');
  53. $defaultNotifyQtyValue = 1;
  54. self::assertEquals(
  55. $defaultNotifyQtyValue,
  56. $sourceItemConfiguration[SourceItemConfigurationInterface::INVENTORY_NOTIFY_QTY]
  57. );
  58. }
  59. /**
  60. * @param string $sourceCode
  61. * @param string $sku
  62. * @return array
  63. */
  64. private function getSourceItemConfiguration(string $sourceCode, string $sku)
  65. {
  66. $serviceInfo = [
  67. 'rest' => [
  68. 'resourcePath' => self::RESOURCE_PATH . '/' . $sourceCode . '/' . $sku,
  69. 'httpMethod' => Request::HTTP_METHOD_GET,
  70. ],
  71. 'soap' => [
  72. 'service' => self::SERVICE_NAME_GET,
  73. 'operation' => self::SERVICE_NAME_GET . 'Execute',
  74. ],
  75. ];
  76. $sourceItemConfiguration = (TESTS_WEB_API_ADAPTER === self::ADAPTER_REST)
  77. ? $this->_webApiCall($serviceInfo)
  78. : $this->_webApiCall($serviceInfo, ['sourceCode' => $sourceCode, 'sku' => $sku]);
  79. self::assertInternalType('array', $sourceItemConfiguration);
  80. self::assertNotEmpty($sourceItemConfiguration);
  81. return $sourceItemConfiguration;
  82. }
  83. }