6 declare(strict_types=1);
15 use Magento\InventorySalesApi\Api\Data\SalesChannelInterfaceFactory;
27 const API_PATH =
'/V1/inventory/stock-resolver';
37 private $objectManager;
42 private $stockRepository;
47 private $salesChannelFactory;
55 $this->stockRepository = $this->objectManager->get(StockRepositoryInterface::class);
56 $this->salesChannelFactory = $this->objectManager->get(SalesChannelInterfaceFactory::class);
70 'resourcePath' => self::API_PATH .
'/website/eu_website',
75 'operation' => self::SERVICE_NAME .
'Execute',
83 'code' =>
'eu_website',
86 $this->assertEquals(10,
$stockData[
'stock_id']);
87 $this->assertEquals(
'EU-stock',
$stockData[
'name']);
88 $this->assertEquals(1, count(
$stockData[
'extension_attributes'][
'sales_channels']));
92 'code' =>
'eu_website' 94 $stockData[
'extension_attributes'][
'sales_channels'][0]
105 public function testResolveCustomStockAfterChangeSalesChannelsTest()
110 'resourcePath' => self::API_PATH .
'/website/us_website',
115 'operation' => self::SERVICE_NAME .
'Execute',
123 'code' =>
'us_website',
126 $this->assertEquals($stockId,
$stockData[
'stock_id']);
127 $this->assertEquals(
'US-stock',
$stockData[
'name']);
128 $this->assertEquals(1, count(
$stockData[
'extension_attributes'][
'sales_channels']));
132 'code' =>
'us_website' 134 $stockData[
'extension_attributes'][
'sales_channels'][0]
138 $stock = $this->stockRepository->get($stockId);
139 $salesChannel = $this->salesChannelFactory->create();
140 $salesChannel->setCode(
'global_website');
142 $stock->getExtensionAttributes()->setSalesChannels([$salesChannel]);
143 $this->stockRepository->save(
$stock);
147 'resourcePath' => self::API_PATH .
'/website/global_website',
152 'operation' => self::SERVICE_NAME .
'Execute',
160 'code' =>
'global_website',
163 $this->assertEquals($stockId,
$stockData[
'stock_id']);
164 $this->assertEquals(
'US-stock',
$stockData[
'name']);
165 $this->assertEquals(1, count(
$stockData[
'extension_attributes'][
'sales_channels']));
169 'code' =>
'global_website' 171 $stockData[
'extension_attributes'][
'sales_channels'][0]
180 $expectedMessage =
'No linked stock found';
183 'resourcePath' => self::API_PATH .
'/website/test_stock_resolver_error',
188 'operation' => self::SERVICE_NAME .
'Execute',
193 TESTS_WEB_API_ADAPTER === self::ADAPTER_REST ? $this->
_webApiCall($serviceInfo)
194 : $this->
_webApiCall($serviceInfo, [
'type' =>
'website',
'code' =>
'test_stock_resolver_error']);
195 $this->fail(
'Expected throwing exception');
196 }
catch (\Exception $e) {
197 if (TESTS_WEB_API_ADAPTER === self::ADAPTER_REST) {
199 }
elseif (TESTS_WEB_API_ADAPTER === self::ADAPTER_SOAP) {
200 $this->assertInstanceOf(
'SoapFault', $e);
201 $this->assertEquals($expectedMessage, $e->getMessage());
elseif(isset( $params[ 'redirect_parent']))
_webApiCall( $serviceInfo, $arguments=[], $webApiAdapterCode=null, $storeCode=null, $integration=null)
testResolveStockStockError()
processRestExceptionResult(\Exception $e)
static getObjectManager()