RegionProcessingTest.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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\SourceRepository;
  8. use Magento\Framework\App\ResourceConnection;
  9. use Magento\Framework\Webapi\Rest\Request;
  10. use Magento\InventoryApi\Api\Data\SourceInterface;
  11. use Magento\TestFramework\Helper\Bootstrap;
  12. use Magento\TestFramework\TestCase\WebapiAbstract;
  13. class RegionProcessingTest extends WebapiAbstract
  14. {
  15. /**#@+
  16. * Service constants
  17. */
  18. const RESOURCE_PATH = '/V1/inventory/sources';
  19. const SERVICE_NAME = 'inventoryApiSourceRepositoryV1';
  20. /**#@-*/
  21. public function testCreateWithPredefinedRegion()
  22. {
  23. $sourceCode = 'source-code-1';
  24. $regionId = 10;
  25. $data = [
  26. SourceInterface::SOURCE_CODE => $sourceCode,
  27. SourceInterface::NAME => 'source-name-1',
  28. SourceInterface::POSTCODE => 'source-postcode',
  29. SourceInterface::COUNTRY_ID => 'US',
  30. SourceInterface::REGION_ID => $regionId,
  31. ];
  32. $this->saveSource($data);
  33. $sourceData = $this->getSourceDataByCode($sourceCode);
  34. self::assertArrayHasKey(SourceInterface::REGION_ID, $sourceData);
  35. self::assertEquals($regionId, $sourceData[SourceInterface::REGION_ID]);
  36. self::assertArrayNotHasKey(SourceInterface::REGION, $sourceData);
  37. }
  38. public function testCreateWithCustomRegion()
  39. {
  40. $sourceCode = 'source-code-1';
  41. $regionName = 'custom-region-name';
  42. $data = [
  43. SourceInterface::SOURCE_CODE => $sourceCode,
  44. SourceInterface::NAME => 'source-name-1',
  45. SourceInterface::POSTCODE => 'source-postcode',
  46. SourceInterface::COUNTRY_ID => 'US',
  47. SourceInterface::REGION => $regionName,
  48. ];
  49. $this->saveSource($data);
  50. $sourceData = $this->getSourceDataByCode($sourceCode);
  51. self::assertArrayHasKey(SourceInterface::REGION, $sourceData);
  52. self::assertEquals($regionName, $sourceData[SourceInterface::REGION]);
  53. self::assertArrayNotHasKey(SourceInterface::REGION_ID, $sourceData);
  54. }
  55. public function testCreateWithBothFilledFields()
  56. {
  57. $sourceCode = 'source-code-1';
  58. $regionId = 10;
  59. $regionName = 'custom-region-name';
  60. $data = [
  61. SourceInterface::SOURCE_CODE => $sourceCode,
  62. SourceInterface::NAME => 'source-name-1',
  63. SourceInterface::REGION_ID => $regionId,
  64. SourceInterface::POSTCODE => 'source-postcode',
  65. SourceInterface::COUNTRY_ID => 'US',
  66. SourceInterface::REGION => $regionName,
  67. ];
  68. $this->saveSource($data);
  69. $sourceData = $this->getSourceDataByCode($sourceCode);
  70. self::assertArrayHasKey(SourceInterface::REGION_ID, $sourceData);
  71. self::assertEquals($regionId, $sourceData[SourceInterface::REGION_ID]);
  72. self::assertArrayHasKey(SourceInterface::REGION, $sourceData);
  73. self::assertEquals($regionName, $sourceData[SourceInterface::REGION]);
  74. }
  75. protected function tearDown()
  76. {
  77. /** @var ResourceConnection $connection */
  78. $connection = Bootstrap::getObjectManager()->get(ResourceConnection::class);
  79. $connection->getConnection()->delete($connection->getTableName('inventory_source'), [
  80. SourceInterface::NAME . ' IN (?)' => ['source-name-1'],
  81. ]);
  82. parent::tearDown();
  83. }
  84. /**
  85. * @param array $data
  86. * @return void
  87. */
  88. private function saveSource(array $data)
  89. {
  90. $serviceInfo = [
  91. 'rest' => [
  92. 'resourcePath' => self::RESOURCE_PATH,
  93. 'httpMethod' => Request::HTTP_METHOD_POST,
  94. ],
  95. 'soap' => [
  96. 'service' => self::SERVICE_NAME,
  97. 'operation' => self::SERVICE_NAME . 'Save',
  98. ],
  99. ];
  100. $this->_webApiCall($serviceInfo, ['source' => $data]);
  101. }
  102. /**
  103. * @param string $sourceCode
  104. * @return array
  105. */
  106. private function getSourceDataByCode(string $sourceCode): array
  107. {
  108. $serviceInfo = [
  109. 'rest' => [
  110. 'resourcePath' => self::RESOURCE_PATH . '/' . $sourceCode,
  111. 'httpMethod' => Request::HTTP_METHOD_GET,
  112. ],
  113. 'soap' => [
  114. 'service' => self::SERVICE_NAME,
  115. 'operation' => self::SERVICE_NAME . 'Get',
  116. ],
  117. ];
  118. $response = (TESTS_WEB_API_ADAPTER === self::ADAPTER_REST)
  119. ? $this->_webApiCall($serviceInfo)
  120. : $this->_webApiCall($serviceInfo, ['sourceCode' => $sourceCode]);
  121. self::assertArrayHasKey(SourceInterface::SOURCE_CODE, $response);
  122. return $response;
  123. }
  124. }