Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AssignWebsiteToDefaultStockTest.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
15 use Magento\Store\Model\WebsiteFactory;
17 use PHPUnit\Framework\TestCase;
18 
19 class AssignWebsiteToDefaultStockTest extends TestCase
20 {
24  private $websiteFactory;
25 
29  private $stockRepository;
30 
34  private $defaultStockProvider;
35 
39  private $storeManager;
40 
41  protected function setUp()
42  {
43  $this->websiteFactory = Bootstrap::getObjectManager()->get(WebsiteFactory::class);
44  $this->stockRepository = Bootstrap::getObjectManager()->get(StockRepositoryInterface::class);
45  $this->defaultStockProvider = Bootstrap::getObjectManager()->get(DefaultStockProviderInterface::class);
46  $this->storeManager = Bootstrap::getObjectManager()->get(StoreManagerInterface::class);
47  }
48 
50  {
51  $websiteCode = $this->storeManager->getWebsite()->getCode();
52 
53  $defaultStockId = $this->defaultStockProvider->getId();
54  $defaultStock = $this->stockRepository->get($defaultStockId);
55 
56  $extensionAttributes = $defaultStock->getExtensionAttributes();
57  $salesChannels = $extensionAttributes->getSalesChannels();
58  self::assertContainsOnlyInstancesOf(SalesChannelInterface::class, $salesChannels);
59  self::assertCount(1, $salesChannels);
60 
61  $salesChannel = reset($salesChannels);
62  self::assertEquals($websiteCode, $salesChannel->getCode());
63  self::assertEquals(SalesChannelInterface::TYPE_WEBSITE, $salesChannel->getType());
64  }
65 
70  public function testThatNewWebsiteWillBeAssignedToDefaultStock()
71  {
72  $websiteCode = 'test_1';
73 
75  $website = $this->websiteFactory->create();
76  $website->setCode($websiteCode);
77  // Use website model because we haven't api interfaces for website saving
78  $website->save();
79 
80  $defaultStockId = $this->defaultStockProvider->getId();
81  $defaultStock = $this->stockRepository->get($defaultStockId);
82 
83  $extensionAttributes = $defaultStock->getExtensionAttributes();
84  $salesChannels = $extensionAttributes->getSalesChannels();
85  self::assertContainsOnlyInstancesOf(SalesChannelInterface::class, $salesChannels);
86 
87  $salesChannelsOfCreatedWebsite = array_filter($salesChannels, function ($salesChannel) use ($websiteCode) {
88  return $salesChannel->getCode() === $websiteCode;
89  });
90 
91  self::assertCount(1, $salesChannelsOfCreatedWebsite);
92 
93  $salesChannelOfCreatedWebsite = reset($salesChannelsOfCreatedWebsite);
94  self::assertEquals($website->getCode(), $salesChannelOfCreatedWebsite->getCode());
95  self::assertEquals(SalesChannelInterface::TYPE_WEBSITE, $salesChannelOfCreatedWebsite->getType());
96  }
97 }
$extensionAttributes
Definition: payment.php:22
if(!isset($_GET['website_code'])) $websiteCode
Definition: website.php:11