Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SourceUnassignTest.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
15 use PHPUnit\Framework\TestCase;
16 
17 class SourceUnassignTest extends TestCase
18 {
22  private $bulkSourceUnassign;
23 
27  private $searchCriteriaBuilder;
28 
32  private $sourceItemRepository;
33 
34  public function setUp()
35  {
36  parent::setUp();
37  $this->bulkSourceUnassign = Bootstrap::getObjectManager()->get(BulkSourceUnassignInterface::class);
38  $this->searchCriteriaBuilder = Bootstrap::getObjectManager()->get(SearchCriteriaBuilder::class);
39  $this->sourceItemRepository = Bootstrap::getObjectManager()->get(SourceItemRepositoryInterface::class);
40  }
41 
46  private function getSourceItemCodesBySku(string $sku): array
47  {
48  $searchCriteria = $this->searchCriteriaBuilder
49  ->addFilter(SourceItemInterface::SKU, $sku)
50  ->create();
51  $sourceItems = $this->sourceItemRepository->getList($searchCriteria)->getItems();
52 
53  $res = [];
54  foreach ($sourceItems as $sourceItem) {
55  $res[] = $sourceItem->getSourceCode();
56  }
57 
58  return $res;
59  }
60 
67  public function testBulkSourceUnassignment()
68  {
69  $skus = ['SKU-1', 'SKU-2', 'SKU-3', 'SKU-4'];
70  $sources = ['eu-1', 'eu-2', 'eu-3'];
71  $count = $this->bulkSourceUnassign->execute($skus, $sources);
72 
73  self::assertEquals(
74  5, // Overall 5 deletions
75  $count,
76  'Products source un-assignment count do not match'
77  );
78 
79  foreach ($skus as $sku) {
80  $sourceItemCodes = $this->getSourceItemCodesBySku($sku);
81  foreach ($sources as $source) {
82  self::assertNotContains(
83  $source,
84  $sourceItemCodes,
85  'Mass source un-assignment failed'
86  );
87  }
88  }
89 
90  $skus = ['SKU-1', 'SKU-2', 'SKU-3', 'SKU-4'];
91  $sources = ['eu-1', 'eu-2', 'eu-3'];
92  $count = $this->bulkSourceUnassign->execute($skus, $sources);
93 
94  self::assertEquals(
95  0, // If we run it the second time on the same entries we should have 0 modifications
96  $count,
97  'Products source un-assignment involved unexpected entries'
98  );
99  }
100 }
$source
Definition: source.php:23
$count
Definition: recent.phtml:13
foreach($websiteCodes as $websiteCode) $skus
$searchCriteria
$sourceItems