defaultAlgorithmCode = Bootstrap::getObjectManager()->get( GetDefaultSourceSelectionAlgorithmCodeInterface::class ); } /** * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/products.php * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/sources.php * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/stocks.php * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/stock_source_links.php * @magentoApiDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/source_items.php */ public function testSourceSelectionService() { $inventoryRequest = [ 'stockId' => 10, 'items' => [ [ 'sku' => 'SKU-1', 'qty' => 8 ], [ 'sku' => 'SKU-4', 'qty' => 4 ] ] ]; $expectedResultData = [ 'source_selection_items' => [ [ 'source_code' => 'eu-1', 'sku' => 'SKU-1', 'qty_to_deduct' => 5.5, 'qty_available' => 5.5 ], [ 'source_code' => 'eu-2', 'sku' => 'SKU-1', 'qty_to_deduct' => 2.5, 'qty_available' => 3 ], [ 'source_code' => 'eu-2', 'sku' => 'SKU-4', 'qty_to_deduct' => 4, 'qty_available' => 6 ], ], 'shippable' => 1 ]; $algorithmCode = $this->defaultAlgorithmCode->execute(); $requestData = [ 'inventoryRequest' => $inventoryRequest, 'algorithmCode' => $algorithmCode ]; $serviceInfo = [ 'rest' => [ 'resourcePath' => self::RESOURCE_PATH, 'httpMethod' => Request::HTTP_METHOD_POST, ], 'soap' => [ 'service' => self::SERVICE_NAME, 'operation' => self::SERVICE_NAME . 'Execute', ], ]; $sourceSelectionAlgorithmResult = (TESTS_WEB_API_ADAPTER === self::ADAPTER_REST) ? $this->_webApiCall($serviceInfo, $requestData) : $this->_webApiCall($serviceInfo, $requestData); self::assertInternalType('array', $sourceSelectionAlgorithmResult); self::assertNotEmpty($sourceSelectionAlgorithmResult); AssertArrayContains::assert($expectedResultData, $sourceSelectionAlgorithmResult); } }