Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
StockItemImporterTest.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
13 use Magento\Framework\Api\SearchCriteriaBuilderFactory;
19 use PHPUnit\Framework\TestCase;
20 
21 class StockItemImporterTest extends TestCase
22 {
26  private $defaultSourceProvider;
27 
31  private $importer;
32 
36  private $searchCriteriaBuilderFactory;
37 
41  private $sourceItemRepository;
42 
46  private $productIdBySku;
47 
51  public function setUp()
52  {
53  $this->defaultSourceProvider = Bootstrap::getObjectManager()->get(
54  DefaultSourceProviderInterface::class
55  );
56  $this->importer = Bootstrap::getObjectManager()->get(
57  StockItemImporterInterface::class
58  );
59  $this->searchCriteriaBuilderFactory = Bootstrap::getObjectManager()->get(
60  SearchCriteriaBuilderFactory::class
61  );
62  $this->sourceItemRepository = Bootstrap::getObjectManager()->get(
63  SourceItemRepositoryInterface::class
64  );
65  $this->productIdBySku = Bootstrap::getObjectManager()->get(
66  GetProductIdsBySkusInterface::class
67  );
68  }
69 
78  {
79  $productId = $this->productIdBySku->execute(['SKU-1'])['SKU-1'];
80  $stockData = [
81  'SKU-1' => [
82  'qty' => 1,
83  'is_in_stock' => SourceItemInterface::STATUS_IN_STOCK,
84  'product_id' => $productId,
85  'website_id' => 0,
86  'stock_id' => 1,
87  ]
88  ];
89 
90  $this->importer->import($stockData);
91 
92  $compareData = $this->buildDataArray($this->getSourceItemList()->getItems());
93  $expectedData = [
94  SourceItemInterface::SKU => 'SKU-1',
96  SourceItemInterface::SOURCE_CODE => $this->defaultSourceProvider->getCode(),
98  ];
99 
100  $this->assertArrayHasKey('SKU-1', $compareData);
101  $this->assertSame($expectedData, $compareData['SKU-1']);
102  }
103 
109  private function getSourceItemList()
110  {
112  $searchCriteriaBuilder = $this->searchCriteriaBuilderFactory->create();
113 
114  $searchCriteriaBuilder->addFilter(
116  'SKU-1'
117  );
118 
119  $searchCriteriaBuilder->addFilter(
121  $this->defaultSourceProvider->getCode()
122  );
123 
126 
127  return $this->sourceItemRepository->getList($searchCriteria);
128  }
129 
134  private function buildDataArray(array $sourceItems)
135  {
136  $comparableArray = [];
137  foreach ($sourceItems as $sourceItem) {
138  $comparableArray[$sourceItem->getSku()] = [
140  SourceItemInterface::QUANTITY => $sourceItem->getQuantity(),
141  SourceItemInterface::SOURCE_CODE => $sourceItem->getSourceCode(),
143  ];
144  }
145 
146  return $comparableArray;
147  }
148 }
$searchCriteria
$sourceItems
$searchCriteriaBuilder
$stockData
Definition: products.php:27