6 declare(strict_types=1);
16 use PHPUnit\Framework\TestCase;
23 private $bulkInventoryTransfer;
28 private $searchCriteriaBuilder;
33 private $sourceItemRepository;
38 private $defaultSourceProvider;
53 private function getSourceItemCodesBySku(
string $sku): array
73 private function getSourceItem(
string $sku,
string $sourceCode): ?SourceItemInterface
99 $this->bulkInventoryTransfer->execute(
$skus,
'eu-1',
'eu-2',
true);
101 $sourceItemCodes = $this->getSourceItemCodesBySku(
'SKU-1');
102 self::assertNotContains(
105 'Products are not unassigned from origin source' 110 $this->getSourceItem(
'SKU-1',
'eu-2')->getQuantity(),
111 'Items were not correctly moved to destination source' 125 $previousSourceStatus = $this->getSourceItem(
'SKU-1',
'eu-3')->getStatus();
128 $this->bulkInventoryTransfer->execute(
$skus,
'eu-3',
'eu-1',
true);
130 $sourceItemCodes = $this->getSourceItemCodesBySku(
'SKU-1');
131 self::assertContains(
134 'Items with out of stock quantity are not transferred to destination' 139 $this->getSourceItem(
'SKU-1',
'eu-1')->getQuantity(),
140 'Items with out of stock quantity were not correctly moved to destination source' 143 $previousSourceStatus,
144 $this->getSourceItem(
'SKU-1',
'eu-1')->getStatus(),
145 'Stock status was not copied to existing source when origin was out of stock' 159 $previousSourceStatus = $this->getSourceItem(
'SKU-1',
'eu-1')->getStatus();
162 $this->bulkInventoryTransfer->execute(
$skus,
'eu-1',
'us-1',
false);
164 $sourceItemCodes = $this->getSourceItemCodesBySku(
'SKU-1');
165 self::assertContains(
168 'Products are not assigned to a new source if transferred' 173 $this->getSourceItem(
'SKU-1',
'eu-1')->getQuantity(),
174 'Items were not removed from source during inventory transfer' 179 $this->getSourceItem(
'SKU-1',
'us-1')->getQuantity(),
180 'Items were not correctly moved to destination source' 183 $previousSourceStatus,
184 $this->getSourceItem(
'SKU-1',
'us-1')->getStatus(),
185 'Destination stock status should have the same configuration as the origin' 199 $previousDestinationStatus = $this->getSourceItem(
'SKU-1',
'eu-1')->getStatus();
202 $this->bulkInventoryTransfer->execute(
$skus,
'us-1',
'eu-1',
false);
204 $sourceItemCodes = $this->getSourceItemCodesBySku(
'SKU-1');
205 self::assertNotContains(
208 'Products are assigned to origin source even if they were not' 213 $this->getSourceItem(
'SKU-1',
'eu-1')->getQuantity(),
214 'Destination source is changed even if origin source was not assigned' 217 $previousDestinationStatus,
218 $this->getSourceItem(
'SKU-1',
'eu-1')->getStatus(),
219 'Stock status on destination was changed even if the source was not assigned' 233 $previousSourceStatus = $this->getSourceItem(
'SKU-1',
'eu-1')->getStatus();
236 $this->bulkInventoryTransfer->execute(
$skus,
'eu-1',
'eu-2',
false);
238 $sourceItemCodes = $this->getSourceItemCodesBySku(
'SKU-1');
239 self::assertContains(
242 'Products are not assigned to destination source' 247 $this->getSourceItem(
'SKU-1',
'eu-1')->getQuantity(),
248 'Items were not removed from source during inventory transfer' 252 $this->getSourceItem(
'SKU-1',
'eu-1')->getStatus(),
253 'Origin source was not set to out of stock' 256 self::assertNotEquals(
258 $this->getSourceItem(
'SKU-1',
'eu-2')->getQuantity(),
259 'Item quantity on destination source is not incremented by origin source' 263 $this->getSourceItem(
'SKU-1',
'eu-2')->getQuantity(),
264 'Items were not correctly moved to destination source' 267 $previousSourceStatus,
268 $this->getSourceItem(
'SKU-1',
'eu-2')->getStatus(),
269 'Stock status on destination should be the same as the origin'
testBulkInventoryTransferWithOutOfStockOrigin()
foreach($websiteCodes as $websiteCode) $skus
testBulkInventoryTransferAndUnassign()
const STATUS_OUT_OF_STOCK
testBulkInventoryTransferToNewSource()
testBulkInventoryTransferToAssignedSource()
testBulkInventoryTransferFromUnassignedOriginSource()
static getObjectManager()