SourceItemConfigurationsSaveTest.php 3.2 KB

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