1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\InventoryCatalog\Test\Integration;
use Magento\CatalogInventory\Api\StockRegistryInterface;
use Magento\InventoryCatalog\Model\GetDefaultSourceItemBySku;
use PHPUnit\Framework\TestCase;
use Magento\TestFramework\Helper\Bootstrap;
class UpdateDefaultSourceItemAtLegacyStockItemSaveTest extends TestCase
{
/**
* @var StockRegistryInterface
*/
private $stockRegistry;
/**
* @var GetDefaultSourceItemBySku
*/
private $getDefaultSourceItemBySku;
protected function setUp()
{
parent::setUp();
$this->stockRegistry = Bootstrap::getObjectManager()->create(StockRegistryInterface::class);
$this->getDefaultSourceItemBySku = Bootstrap::getObjectManager()->get(GetDefaultSourceItemBySku::class);
}
/**
* @magentoDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/sources.php
* @magentoDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/products.php
* @magentoDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/source_items.php
* @magentoDataFixture ../../../../app/code/Magento/InventoryCatalog/Test/_files/source_items_on_default_source.php
* @magentoDbIsolation enabled
* @throws \Magento\Framework\Exception\NoSuchEntityException
*/
public function testSaveLegacyStockItemAssignedToDefaultSource()
{
$stockItem = $this->stockRegistry->getStockItemBySku('SKU-1');
$stockItem->setQty(10);
$this->stockRegistry->updateStockItemBySku('SKU-1', $stockItem);
$defaultSourceItem = $this->getDefaultSourceItemBySku->execute('SKU-1');
self::assertEquals(
10,
$defaultSourceItem->getQuantity(),
'Quantity is not updated in default source when legacy stock is updated and product was'
. 'previously assigned to default source'
);
}
/**
* @magentoDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/sources.php
* @magentoDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/products.php
* @magentoDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/source_items.php
* @magentoDataFixture ../../../../app/code/Magento/InventoryCatalog/Test/_files/source_items_on_default_source.php
* @magentoDbIsolation enabled
* @throws \Magento\Framework\Exception\NoSuchEntityException
*/
public function testSaveLegacyStockItemNotAssignedToDefaultSource()
{
$stockItem = $this->stockRegistry->getStockItemBySku('SKU-2');
$stockItem->setQty(10);
$this->stockRegistry->updateStockItemBySku('SKU-2', $stockItem);
$defaultSourceItem = $this->getDefaultSourceItemBySku->execute('SKU-2');
self::assertEquals(
10,
$defaultSourceItem->getQuantity(),
'Quantity is not updated in default source when legacy stock is updated'
);
// SKU-3 is out of stock and not assigned to default source
$stockItem = $this->stockRegistry->getStockItemBySku('SKU-3');
$stockItem->setQty(10);
$this->stockRegistry->updateStockItemBySku('SKU-3', $stockItem);
$defaultSourceItem = $this->getDefaultSourceItemBySku->execute('SKU-3');
self::assertEquals(
10,
$defaultSourceItem->getQuantity(),
'Quantity is not updated in default source when legacy stock is updated and product was not '
. 'previously assigned to default source'
);
}
/**
* @magentoDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/sources.php
* @magentoDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/products.php
* @magentoDataFixture ../../../../app/code/Magento/InventoryApi/Test/_files/source_items.php
* @magentoDbIsolation enabled
* @throws \Magento\Framework\Exception\NoSuchEntityException
*/
public function testSaveLegacyStockItemWithoutDefaultSourceAssignment()
{
// SKU-3 is out of stock and not assigned to default source
$stockItem = $this->stockRegistry->getStockItemBySku('SKU-3');
$stockItem->setQty(0);
$stockItem->setIsInStock(false);
$this->stockRegistry->updateStockItemBySku('SKU-3', $stockItem);
$defaultSourceItem = $this->getDefaultSourceItemBySku->execute('SKU-3');
self::assertNull(
$defaultSourceItem,
'Product is assigned to default source on legacy stock item save even if it should not be'
);
// SKU-5 is out of stock and not assigned to default source
$stockItem = $this->stockRegistry->getStockItemBySku('SKU-5');
$stockItem->setQty(1);
$stockItem->setIsInStock(true);
$this->stockRegistry->updateStockItemBySku('SKU-5', $stockItem);
$defaultSourceItem = $this->getDefaultSourceItemBySku->execute('SKU-5');
self::assertNotNull(
$defaultSourceItem,
'Product is not assigned to default source on legacy stock item save even if it should be'
);
}
}