Skip to content
This repository was archived by the owner on Apr 29, 2019. It is now read-only.

Commit 2c153c3

Browse files
Merge forwardport of magento/magento2#11702 to 2.3-develop branch
Applied pull request patch https://github.com/magento/magento2/pull/11702.patch (created by @tdgroot) based on commit(s): 1. 0eea3b3 2. 73b4aa5 3. 5afcc52 4. 6b325e1 5. 3cf3ce6 6. f76d7cb Fixed GitHub Issues in 2.3-develop branch: - magento/magento2#9055: Default Store is always used when retrieving sequence value's for sales entity's. (reported by @reztierk)
2 parents 245238d + 77f34cf commit 2c153c3

File tree

2 files changed

+124
-18
lines changed

2 files changed

+124
-18
lines changed

app/code/Magento/Quote/Model/ResourceModel/Quote.php

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ public function getReservedOrderId($quote)
165165
{
166166
return $this->sequenceManager->getSequence(
167167
\Magento\Sales\Model\Order::ENTITY,
168-
$quote->getStore()->getGroup()->getDefaultStoreId()
168+
$quote->getStoreId()
169169
)
170170
->getNextValue();
171171
}
@@ -232,7 +232,7 @@ public function markQuotesRecollectOnCatalogRules()
232232
* @param \Magento\Catalog\Model\Product $product
233233
* @return $this
234234
*/
235-
public function substractProductFromQuotes($product)
235+
public function subtractProductFromQuotes($product)
236236
{
237237
$productId = (int)$product->getId();
238238
if (!$productId) {
@@ -272,6 +272,21 @@ public function substractProductFromQuotes($product)
272272
return $this;
273273
}
274274

275+
/**
276+
* Subtract product from all quotes quantities
277+
*
278+
* @param \Magento\Catalog\Model\Product $product
279+
*
280+
* @deprecated 101.0.1
281+
* @see \Magento\Quote\Model\ResourceModel\Quote::subtractProductFromQuotes
282+
*
283+
* @return $this
284+
*/
285+
public function substractProductFromQuotes($product)
286+
{
287+
return $this->subtractProductFromQuotes($product);
288+
}
289+
275290
/**
276291
* Mark recollect contain product(s) quotes
277292
*

app/code/Magento/Quote/Test/Unit/Model/ResourceModel/QuoteTest.php

Lines changed: 107 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,43 +6,71 @@
66

77
namespace Magento\Quote\Test\Unit\Model\ResourceModel;
88

9+
10+
use Magento\Framework\App\ResourceConnection;
11+
use Magento\Framework\DB\Adapter\Pdo\Mysql;
12+
use Magento\Framework\DB\Select;
13+
use Magento\Framework\DB\Sequence\SequenceInterface;
14+
use Magento\Framework\Model\ResourceModel\Db\Context;
15+
use Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite;
16+
use Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot;
17+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
18+
use Magento\Quote\Model\Quote;
19+
use Magento\Quote\Model\ResourceModel\Quote as QuoteResource;
20+
use Magento\SalesSequence\Model\Manager;
21+
922
class QuoteTest extends \PHPUnit\Framework\TestCase
1023
{
1124
/**
12-
* @var \Magento\Quote\Model\ResourceModel\Quote
13-
*/
14-
private $model;
15-
16-
/**
17-
* @var \Magento\Framework\App\ResourceConnection
25+
* @var ResourceConnection
1826
*/
1927
private $resourceMock;
2028

2129
/**
22-
* @var \Magento\Framework\DB\Adapter\Pdo\Mysql
30+
* @var Mysql
2331
*/
2432
private $adapterMock;
2533

2634
/**
27-
* @var \Magento\Framework\DB\Select
35+
* @var Select
2836
*/
2937
private $selectMock;
3038

39+
/**
40+
* @var Quote|\PHPUnit_Framework_MockObject_MockObject
41+
*/
42+
private $quoteMock;
43+
44+
/**
45+
* @var Manager|\PHPUnit_Framework_MockObject_MockObject
46+
*/
47+
private $sequenceManagerMock;
48+
49+
/**
50+
* @var SequenceInterface|\PHPUnit_Framework_MockObject_MockObject
51+
*/
52+
private $sequenceMock;
53+
54+
/**
55+
* @var QuoteResource
56+
*/
57+
private $model;
58+
3159
protected function setUp()
3260
{
33-
$objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
34-
$this->selectMock = $this->getMockBuilder(\Magento\Framework\DB\Select::class)
61+
$objectManagerHelper = new ObjectManager($this);
62+
$this->selectMock = $this->getMockBuilder(Select::class)
3563
->disableOriginalConstructor()
3664
->getMock();
3765
$this->selectMock->expects($this->any())->method('from')->will($this->returnSelf());
3866
$this->selectMock->expects($this->any())->method('where');
3967

40-
$this->adapterMock = $this->getMockBuilder(\Magento\Framework\DB\Adapter\Pdo\Mysql::class)
68+
$this->adapterMock = $this->getMockBuilder(Mysql::class)
4169
->disableOriginalConstructor()
4270
->getMock();
4371
$this->adapterMock->expects($this->any())->method('select')->will($this->returnValue($this->selectMock));
4472

45-
$this->resourceMock = $this->getMockBuilder(\Magento\Framework\App\ResourceConnection::class)
73+
$this->resourceMock = $this->getMockBuilder(ResourceConnection::class)
4674
->disableOriginalConstructor()
4775
->getMock();
4876
$this->resourceMock->expects(
@@ -53,10 +81,38 @@ protected function setUp()
5381
$this->returnValue($this->adapterMock)
5482
);
5583

56-
$this->model = $objectManagerHelper->getObject(
57-
\Magento\Quote\Model\ResourceModel\Quote::class,
58-
[
59-
'resource' => $this->resourceMock
84+
$context = $this->getMockBuilder(Context::class)
85+
->disableOriginalConstructor()
86+
->getMock();
87+
$context->expects(
88+
$this->once()
89+
)->method(
90+
'getResources'
91+
)->will(
92+
$this->returnValue($this->resourceMock)
93+
);
94+
95+
$snapshot = $this->getMockBuilder(Snapshot::class)
96+
->disableOriginalConstructor()
97+
->getMock();
98+
$relationComposite = $this->getMockBuilder(RelationComposite::class)
99+
->disableOriginalConstructor()
100+
->getMock();
101+
$this->quoteMock = $this->getMockBuilder(Quote::class)
102+
->disableOriginalConstructor()
103+
->getMock();
104+
$this->sequenceManagerMock = $this->getMockBuilder(Manager::class)
105+
->disableOriginalConstructor()
106+
->getMock();
107+
$this->sequenceMock = $this->getMockBuilder(SequenceInterface::class)
108+
->disableOriginalConstructor()
109+
->getMock();
110+
$this->model = $objectManagerHelper->getObject(QuoteResource::class, [
111+
'context' => $context,
112+
'entitySnapshot' => $snapshot,
113+
'entityRelationComposite' => $relationComposite,
114+
'sequenceManager' => $this->sequenceManagerMock,
115+
'connectionName' => null,
60116
]
61117
);
62118
}
@@ -81,4 +137,39 @@ public function isOrderIncrementIdUsedDataProvider()
81137
{
82138
return [[100000001], ['10000000001'], ['M10000000001']];
83139
}
140+
141+
/**
142+
* /**
143+
* @param $entityType
144+
* @param $storeId
145+
* @param $reservedOrderId
146+
* @dataProvider getReservedOrderIdDataProvider
147+
*/
148+
public function testGetReservedOrderId($entityType, $storeId, $reservedOrderId)
149+
{
150+
$this->sequenceManagerMock->expects($this->once())
151+
->method('getSequence')
152+
->with($entityType, $storeId)
153+
->willReturn($this->sequenceMock);
154+
$this->quoteMock->expects($this->once())
155+
->method('getStoreId')
156+
->willReturn($storeId);
157+
$this->sequenceMock->expects($this->once())
158+
->method('getNextValue')
159+
->willReturn($reservedOrderId);
160+
161+
$this->assertEquals($reservedOrderId, $this->model->getReservedOrderId($this->quoteMock));
162+
}
163+
164+
/**
165+
* @return array
166+
*/
167+
public function getReservedOrderIdDataProvider(): array
168+
{
169+
return [
170+
[\Magento\Sales\Model\Order::ENTITY, 1, '1000000001'],
171+
[\Magento\Sales\Model\Order::ENTITY, 2, '2000000001'],
172+
[\Magento\Sales\Model\Order::ENTITY, 3, '3000000001']
173+
];
174+
}
84175
}

0 commit comments

Comments
 (0)