Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
StockResolverTest.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
15 use Magento\InventorySalesApi\Api\Data\SalesChannelInterfaceFactory;
18 use PHPUnit\Framework\TestCase;
19 
20 class StockResolverTest extends TestCase
21 {
25  private $objectManager;
26 
30  private $stockRepository;
31 
35  private $salesChannelFactory;
36 
40  private $stockResolverInterface;
41 
45  protected function setUp()
46  {
47  $this->objectManager = Bootstrap::getObjectManager();
48  $this->stockRepository = $this->objectManager->get(StockRepositoryInterface::class);
49  $this->salesChannelFactory = $this->objectManager->get(SalesChannelInterfaceFactory::class);
50  $this->stockResolverInterface = $this->objectManager->get(StockResolverInterface::class);
51  }
52 
60  public function testExecute()
61  {
63  $stock = $this->stockResolverInterface->execute(SalesChannelInterface::TYPE_WEBSITE, 'eu_website');
64  $this->assertEquals(10, $stock->getStockId());
65  $this->assertEquals('EU-stock', $stock->getName());
66  $salesChannels = $stock->getExtensionAttributes()->getSalesChannels();
67  $this->assertEquals(1, count($salesChannels));
69  $salesChannel = $salesChannels[0];
70  $this->assertEquals('website', $salesChannel->getType());
71  $this->assertEquals('eu_website', $salesChannel->getCode());
72  }
73 
81  public function testExecuteAfterChangeSalesChannelsTest()
82  {
83  $stockId = 20;
85  $stock = $this->stockResolverInterface->execute(SalesChannelInterface::TYPE_WEBSITE, 'us_website');
86  $this->assertEquals($stockId, $stock->getStockId());
87  $this->assertEquals('US-stock', $stock->getName());
88  $salesChannels = $stock->getExtensionAttributes()->getSalesChannels();
89  $this->assertEquals(1, count($salesChannels));
91  $salesChannel = $salesChannels[0];
92  $this->assertEquals('website', $salesChannel->getType());
93  $this->assertEquals('us_website', $salesChannel->getCode());
94 
96  $stock = $this->stockRepository->get($stockId);
97  $salesChannel = $this->salesChannelFactory->create();
98  $salesChannel->setCode('global_website');
99  $salesChannel->setType(SalesChannelInterface::TYPE_WEBSITE);
100  $stock->getExtensionAttributes()->setSalesChannels([$salesChannel]);
101  $this->stockRepository->save($stock);
102 
103  $stock = $this->stockResolverInterface->execute(SalesChannelInterface::TYPE_WEBSITE, 'global_website');
104  $this->assertEquals($stockId, $stock->getStockId());
105  $this->assertEquals('US-stock', $stock->getName());
106  $salesChannels = $stock->getExtensionAttributes()->getSalesChannels();
107  $this->assertEquals(1, count($salesChannels));
109  $salesChannel = $salesChannels[0];
110  $this->assertEquals('website', $salesChannel->getType());
111  $this->assertEquals('global_website', $salesChannel->getCode());
112  }
113 
117  public function testExecuteWithError()
118  {
119  try {
120  $this->stockResolverInterface->execute(SalesChannelInterface::TYPE_WEBSITE, 'us_website');
121  } catch (NoSuchEntityException $e) {
122  $this->assertEquals('No linked stock found', $e->getMessage());
123  }
124  }
125 }
$stock