From 0eea3b38ae20f690187e858457a7e97d7547347c Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Tue, 24 Oct 2017 19:37:17 +0200 Subject: [PATCH 1/6] Fix getReservedOrderId() to use current store instead of default store --- app/code/Magento/Quote/Model/ResourceModel/Quote.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Quote/Model/ResourceModel/Quote.php b/app/code/Magento/Quote/Model/ResourceModel/Quote.php index 9f491b749a812..f38ea81b3dd89 100644 --- a/app/code/Magento/Quote/Model/ResourceModel/Quote.php +++ b/app/code/Magento/Quote/Model/ResourceModel/Quote.php @@ -167,7 +167,7 @@ public function getReservedOrderId($quote) { return $this->sequenceManager->getSequence( \Magento\Sales\Model\Order::ENTITY, - $quote->getStore()->getGroup()->getDefaultStoreId() + $quote->getStore()->getStoreId() ) ->getNextValue(); } From 73b4aa5dec630cf1529afd43a6c44e18ce0f4dbe Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Tue, 24 Oct 2017 19:54:26 +0200 Subject: [PATCH 2/6] Refactor method substractProductFromQuotes to subtractProductFromQuotes --- .../Magento/Quote/Model/ResourceModel/Quote.php | 17 ++++++++++++++++- .../Backend/SubtractQtyFromQuotesObserver.php | 2 +- .../SubtractQtyFromQuotesObserverTest.php | 6 +++--- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/Quote/Model/ResourceModel/Quote.php b/app/code/Magento/Quote/Model/ResourceModel/Quote.php index f38ea81b3dd89..4ab0c803c879c 100644 --- a/app/code/Magento/Quote/Model/ResourceModel/Quote.php +++ b/app/code/Magento/Quote/Model/ResourceModel/Quote.php @@ -211,7 +211,7 @@ public function markQuotesRecollectOnCatalogRules() * @param \Magento\Catalog\Model\Product $product * @return $this */ - public function substractProductFromQuotes($product) + public function subtractProductFromQuotes($product) { $productId = (int)$product->getId(); if (!$productId) { @@ -251,6 +251,21 @@ public function substractProductFromQuotes($product) return $this; } + /** + * Subtract product from all quotes quantities + * + * @param \Magento\Catalog\Model\Product $product + * + * @deprecated 101.0.0 + * @see \Magento\Quote\Model\ResourceModel\Quote::subtractProductFromQuotes + * + * @return $this + */ + public function substractProductFromQuotes($product) + { + return $this->subtractProductFromQuotes($product); + } + /** * Mark recollect contain product(s) quotes * diff --git a/app/code/Magento/Sales/Observer/Backend/SubtractQtyFromQuotesObserver.php b/app/code/Magento/Sales/Observer/Backend/SubtractQtyFromQuotesObserver.php index 775a7dab95cfe..cd8c705750d6c 100644 --- a/app/code/Magento/Sales/Observer/Backend/SubtractQtyFromQuotesObserver.php +++ b/app/code/Magento/Sales/Observer/Backend/SubtractQtyFromQuotesObserver.php @@ -31,6 +31,6 @@ public function __construct(\Magento\Quote\Model\ResourceModel\Quote $quote) public function execute(\Magento\Framework\Event\Observer $observer) { $product = $observer->getEvent()->getProduct(); - $this->_quote->substractProductFromQuotes($product); + $this->_quote->subtractProductFromQuotes($product); } } diff --git a/app/code/Magento/Sales/Test/Unit/Observer/Backend/SubtractQtyFromQuotesObserverTest.php b/app/code/Magento/Sales/Test/Unit/Observer/Backend/SubtractQtyFromQuotesObserverTest.php index a6a828c888fc0..6b94605108866 100644 --- a/app/code/Magento/Sales/Test/Unit/Observer/Backend/SubtractQtyFromQuotesObserverTest.php +++ b/app/code/Magento/Sales/Test/Unit/Observer/Backend/SubtractQtyFromQuotesObserverTest.php @@ -15,12 +15,12 @@ class SubtractQtyFromQuotesObserverTest extends \PHPUnit\Framework\TestCase protected $_model; /** - * @var \PHPUnit_Framework_MockObject_MockObject + * @var \Magento\Quote\Model\ResourceModel\Quote|\PHPUnit_Framework_MockObject_MockObject */ protected $_quoteMock; /** - * @var \PHPUnit_Framework_MockObject_MockObject + * @var \Magento\Framework\Event\Observer|\PHPUnit_Framework_MockObject_MockObject */ protected $_observerMock; @@ -48,7 +48,7 @@ public function testSubtractQtyFromQuotes() ['getId', 'getStatus', '__wakeup'] ); $this->_eventMock->expects($this->once())->method('getProduct')->will($this->returnValue($productMock)); - $this->_quoteMock->expects($this->once())->method('substractProductFromQuotes')->with($productMock); + $this->_quoteMock->expects($this->once())->method('subtractProductFromQuotes')->with($productMock); $this->_model->execute($this->_observerMock); } } From 5afcc52ed7a3a422f6b7dfa83e6db9e6164cc15a Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Wed, 25 Oct 2017 08:19:45 +0200 Subject: [PATCH 3/6] Add \Magento\Quote\Test\Unit\Model\ResourceModel\QuoteTest --- .../Unit/Model/ResourceModel/QuoteTest.php | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 app/code/Magento/Quote/Test/Unit/Model/ResourceModel/QuoteTest.php diff --git a/app/code/Magento/Quote/Test/Unit/Model/ResourceModel/QuoteTest.php b/app/code/Magento/Quote/Test/Unit/Model/ResourceModel/QuoteTest.php new file mode 100644 index 0000000000000..d60dd073d121d --- /dev/null +++ b/app/code/Magento/Quote/Test/Unit/Model/ResourceModel/QuoteTest.php @@ -0,0 +1,105 @@ +getMockBuilder(\Magento\Framework\Model\ResourceModel\Db\Context::class) + ->disableOriginalConstructor() + ->getMock(); + $snapshot = $this->getMockBuilder(\Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot::class) + ->disableOriginalConstructor() + ->getMock(); + $entityRelationComposite = $this->getMockBuilder(\Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite::class) + ->disableOriginalConstructor() + ->getMock(); + $this->quoteMock = $this->getMockBuilder(\Magento\Quote\Model\Quote::class) + ->disableOriginalConstructor() + ->getMock(); + $this->sequenceManagerMock = $this->getMockBuilder(\Magento\SalesSequence\Model\Manager::class) + ->disableOriginalConstructor() + ->getMock(); + $this->sequenceMock = $this->getMockBuilder(\Magento\Framework\DB\Sequence\SequenceInterface::class) + ->disableOriginalConstructor() + ->getMock(); + $this->storeMock = $this->getMockBuilder(\Magento\Sales\Model\Order::class) + ->disableOriginalConstructor() + ->getMock(); + $this->quote = new \Magento\Quote\Model\ResourceModel\Quote( + $context, + $snapshot, + $entityRelationComposite, + $this->sequenceManagerMock, + null + ); + } + + /** + * @param $entityType + * @param $storeId + * @dataProvider getReservedOrderIdDataProvider + */ + public function testGetReservedOrderId($entityType, $storeId) + { + $this->sequenceManagerMock->expects($this->once()) + ->method('getSequence') + ->with(\Magento\Sales\Model\Order::ENTITY, $storeId) + ->willReturn($this->sequenceMock); + $this->quoteMock->expects($this->once()) + ->method('getStore') + ->willReturn($this->storeMock); + $this->storeMock->expects($this->once()) + ->method('getStoreId') + ->willReturn($storeId); + $this->sequenceMock->expects($this->once()) + ->method('getNextValue'); + + $this->quote->getReservedOrderId($this->quoteMock); + } + + /** + * @return array + */ + public function getReservedOrderIdDataProvider(): array + { + return [ + [\Magento\Sales\Model\Order::ENTITY, 1], + [\Magento\Sales\Model\Order::ENTITY, 2], + [\Magento\Sales\Model\Order::ENTITY, 3] + ]; + } +} \ No newline at end of file From 6b325e1356a463fa9a3f435c91c5c149615e2fcd Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Wed, 25 Oct 2017 17:53:28 +0200 Subject: [PATCH 4/6] Use $quote->getStoreId() in Quote::getReservedOrderId() --- .../Quote/Model/ResourceModel/Quote.php | 2 +- .../Unit/Model/ResourceModel/QuoteTest.php | 27 +++++++------------ 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/app/code/Magento/Quote/Model/ResourceModel/Quote.php b/app/code/Magento/Quote/Model/ResourceModel/Quote.php index 4ab0c803c879c..0efbc5145530e 100644 --- a/app/code/Magento/Quote/Model/ResourceModel/Quote.php +++ b/app/code/Magento/Quote/Model/ResourceModel/Quote.php @@ -167,7 +167,7 @@ public function getReservedOrderId($quote) { return $this->sequenceManager->getSequence( \Magento\Sales\Model\Order::ENTITY, - $quote->getStore()->getStoreId() + $quote->getStoreId() ) ->getNextValue(); } diff --git a/app/code/Magento/Quote/Test/Unit/Model/ResourceModel/QuoteTest.php b/app/code/Magento/Quote/Test/Unit/Model/ResourceModel/QuoteTest.php index d60dd073d121d..27d113767029d 100644 --- a/app/code/Magento/Quote/Test/Unit/Model/ResourceModel/QuoteTest.php +++ b/app/code/Magento/Quote/Test/Unit/Model/ResourceModel/QuoteTest.php @@ -23,11 +23,6 @@ class QuoteTest extends \PHPUnit\Framework\TestCase */ private $sequenceMock; - /** - * @var \Magento\Sales\Model\Order|\PHPUnit_Framework_MockObject_MockObject - */ - private $storeMock; - /** * @var \Magento\Quote\Model\ResourceModel\Quote */ @@ -56,9 +51,6 @@ protected function setUp() $this->sequenceMock = $this->getMockBuilder(\Magento\Framework\DB\Sequence\SequenceInterface::class) ->disableOriginalConstructor() ->getMock(); - $this->storeMock = $this->getMockBuilder(\Magento\Sales\Model\Order::class) - ->disableOriginalConstructor() - ->getMock(); $this->quote = new \Magento\Quote\Model\ResourceModel\Quote( $context, $snapshot, @@ -71,24 +63,23 @@ protected function setUp() /** * @param $entityType * @param $storeId + * @param $reservedOrderId * @dataProvider getReservedOrderIdDataProvider */ - public function testGetReservedOrderId($entityType, $storeId) + public function testGetReservedOrderId($entityType, $storeId, $reservedOrderId) { $this->sequenceManagerMock->expects($this->once()) ->method('getSequence') - ->with(\Magento\Sales\Model\Order::ENTITY, $storeId) + ->with($entityType, $storeId) ->willReturn($this->sequenceMock); $this->quoteMock->expects($this->once()) - ->method('getStore') - ->willReturn($this->storeMock); - $this->storeMock->expects($this->once()) ->method('getStoreId') ->willReturn($storeId); $this->sequenceMock->expects($this->once()) - ->method('getNextValue'); + ->method('getNextValue') + ->willReturn($reservedOrderId); - $this->quote->getReservedOrderId($this->quoteMock); + $this->assertEquals($reservedOrderId, $this->quote->getReservedOrderId($this->quoteMock)); } /** @@ -97,9 +88,9 @@ public function testGetReservedOrderId($entityType, $storeId) public function getReservedOrderIdDataProvider(): array { return [ - [\Magento\Sales\Model\Order::ENTITY, 1], - [\Magento\Sales\Model\Order::ENTITY, 2], - [\Magento\Sales\Model\Order::ENTITY, 3] + [\Magento\Sales\Model\Order::ENTITY, 1, '1000000001'], + [\Magento\Sales\Model\Order::ENTITY, 2, '2000000001'], + [\Magento\Sales\Model\Order::ENTITY, 3, '3000000001'] ]; } } \ No newline at end of file From 3cf3ce650b4b7120cd31f920f2c035181dc6dc87 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Thu, 26 Oct 2017 19:18:00 +0200 Subject: [PATCH 5/6] Fix variable exceeding max character length --- .../Unit/Model/ResourceModel/QuoteTest.php | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/app/code/Magento/Quote/Test/Unit/Model/ResourceModel/QuoteTest.php b/app/code/Magento/Quote/Test/Unit/Model/ResourceModel/QuoteTest.php index 27d113767029d..ab36746da5e73 100644 --- a/app/code/Magento/Quote/Test/Unit/Model/ResourceModel/QuoteTest.php +++ b/app/code/Magento/Quote/Test/Unit/Model/ResourceModel/QuoteTest.php @@ -6,20 +6,27 @@ namespace Magento\Quote\Test\Unit\Model\ResourceModel; +use Magento\Framework\DB\Sequence\SequenceInterface; +use Magento\Framework\Model\ResourceModel\Db\Context; +use Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite; +use Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot; +use Magento\Quote\Model\Quote; +use Magento\SalesSequence\Model\Manager; + class QuoteTest extends \PHPUnit\Framework\TestCase { /** - * @var \Magento\Quote\Model\Quote|\PHPUnit_Framework_MockObject_MockObject + * @var Quote|\PHPUnit_Framework_MockObject_MockObject */ private $quoteMock; /** - * @var \Magento\SalesSequence\Model\Manager|\PHPUnit_Framework_MockObject_MockObject + * @var Manager|\PHPUnit_Framework_MockObject_MockObject */ private $sequenceManagerMock; /** - * @var \Magento\Framework\DB\Sequence\SequenceInterface|\PHPUnit_Framework_MockObject_MockObject + * @var SequenceInterface|\PHPUnit_Framework_MockObject_MockObject */ private $sequenceMock; @@ -33,28 +40,28 @@ class QuoteTest extends \PHPUnit\Framework\TestCase */ protected function setUp() { - $context = $this->getMockBuilder(\Magento\Framework\Model\ResourceModel\Db\Context::class) + $context = $this->getMockBuilder(Context::class) ->disableOriginalConstructor() ->getMock(); - $snapshot = $this->getMockBuilder(\Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot::class) + $snapshot = $this->getMockBuilder(Snapshot::class) ->disableOriginalConstructor() ->getMock(); - $entityRelationComposite = $this->getMockBuilder(\Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite::class) + $relationComposite = $this->getMockBuilder(RelationComposite::class) ->disableOriginalConstructor() ->getMock(); - $this->quoteMock = $this->getMockBuilder(\Magento\Quote\Model\Quote::class) + $this->quoteMock = $this->getMockBuilder(Quote::class) ->disableOriginalConstructor() ->getMock(); - $this->sequenceManagerMock = $this->getMockBuilder(\Magento\SalesSequence\Model\Manager::class) + $this->sequenceManagerMock = $this->getMockBuilder(Manager::class) ->disableOriginalConstructor() ->getMock(); - $this->sequenceMock = $this->getMockBuilder(\Magento\Framework\DB\Sequence\SequenceInterface::class) + $this->sequenceMock = $this->getMockBuilder(SequenceInterface::class) ->disableOriginalConstructor() ->getMock(); $this->quote = new \Magento\Quote\Model\ResourceModel\Quote( $context, $snapshot, - $entityRelationComposite, + $relationComposite, $this->sequenceManagerMock, null ); @@ -93,4 +100,4 @@ public function getReservedOrderIdDataProvider(): array [\Magento\Sales\Model\Order::ENTITY, 3, '3000000001'] ]; } -} \ No newline at end of file +} From f76d7cb4afe82c235fbaacae296656ca684b80f5 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Thu, 26 Oct 2017 19:24:14 +0200 Subject: [PATCH 6/6] Change deprecation version to 101.0.1 in Magento\Quote\Model\ResourceModel\Quote::substractProductFromQuotes --- app/code/Magento/Quote/Model/ResourceModel/Quote.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Quote/Model/ResourceModel/Quote.php b/app/code/Magento/Quote/Model/ResourceModel/Quote.php index 0efbc5145530e..2645d52c87da5 100644 --- a/app/code/Magento/Quote/Model/ResourceModel/Quote.php +++ b/app/code/Magento/Quote/Model/ResourceModel/Quote.php @@ -256,7 +256,7 @@ public function subtractProductFromQuotes($product) * * @param \Magento\Catalog\Model\Product $product * - * @deprecated 101.0.0 + * @deprecated 101.0.1 * @see \Magento\Quote\Model\ResourceModel\Quote::subtractProductFromQuotes * * @return $this