Skip to content

Commit b236893

Browse files
author
Sergii Kovalenko
committed
MAGETWO-71613: [AP: New Order] Tier-prices are not applied on add complex product by SKU
1 parent 0b39225 commit b236893

File tree

1 file changed

+72
-1
lines changed

1 file changed

+72
-1
lines changed

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

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,11 @@ class QuoteTest extends \PHPUnit\Framework\TestCase
142142
*/
143143
private $customerDataFactoryMock;
144144

145+
/**
146+
* @var \PHPUnit_Framework_MockObject_MockObject
147+
*/
148+
private $itemProcessor;
149+
145150
/**
146151
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
147152
*/
@@ -223,7 +228,9 @@ protected function setUp()
223228
$this->filterBuilderMock = $this->getMockBuilder(\Magento\Framework\Api\FilterBuilder::class)
224229
->disableOriginalConstructor()
225230
->getMock();
226-
231+
$this->itemProcessor = $this->getMockBuilder(\Magento\Quote\Model\Quote\Item\Processor::class)
232+
->disableOriginalConstructor()
233+
->getMock();
227234
$this->extensionAttributesJoinProcessorMock = $this->createMock(\Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface::class);
228235
$this->customerDataFactoryMock = $this->createPartialMock(\Magento\Customer\Api\Data\CustomerInterfaceFactory::class, ['create']);
229236
$this->quote = (new ObjectManager($this))
@@ -249,6 +256,7 @@ protected function setUp()
249256
'objectCopyService' => $this->objectCopyServiceMock,
250257
'extensionAttributesJoinProcessor' => $this->extensionAttributesJoinProcessorMock,
251258
'customerDataFactory' => $this->customerDataFactoryMock,
259+
'itemProcessor' => $this->itemProcessor,
252260
'data' => [
253261
'reserved_order_id' => 1000001
254262
]
@@ -853,6 +861,69 @@ public function testAddProductItemPreparation()
853861
$this->assertEquals($expectedResult, $result);
854862
}
855863

864+
public function testAddProductItemNew()
865+
{
866+
$itemMock = $this->createMock(\Magento\Quote\Model\Quote\Item::class);
867+
868+
$expectedResult = $itemMock;
869+
$requestMock = $this->createMock(
870+
\Magento\Framework\DataObject::class
871+
);
872+
$this->objectFactoryMock->expects($this->once())
873+
->method('create')
874+
->with($this->equalTo(['qty' => 1]))
875+
->will($this->returnValue($requestMock));
876+
877+
$typeInstanceMock = $this->createPartialMock(\Magento\Catalog\Model\Product\Type\Simple::class, [
878+
'prepareForCartAdvanced'
879+
]);
880+
881+
$productMock = $this->createPartialMock(\Magento\Catalog\Model\Product::class, [
882+
'getParentProductId',
883+
'setStickWithinParent',
884+
'__wakeup'
885+
]);
886+
887+
$collectionMock = $this->createMock(\Magento\Quote\Model\ResourceModel\Quote\Item\Collection::class);
888+
889+
$itemMock->expects($this->any())
890+
->method('representProduct')
891+
->will($this->returnValue(false));
892+
893+
$iterator = new \ArrayIterator([$itemMock]);
894+
$collectionMock->expects($this->any())
895+
->method('getIterator')
896+
->will($this->returnValue($iterator));
897+
898+
$this->quoteItemCollectionFactoryMock->expects($this->once())
899+
->method('create')
900+
->will($this->returnValue($collectionMock));
901+
902+
$this->productMock->expects($this->once())
903+
->method('isSalable')
904+
->willReturn(true);
905+
$this->itemProcessor
906+
->expects($this->once())
907+
->method('init')
908+
->willReturn($itemMock);
909+
$itemMock->expects($this->once())
910+
->method('setProduct');
911+
$itemMock->expects($this->once())
912+
->method('setOptions');
913+
$itemMock->expects($this->any())
914+
->method('setQuote')
915+
->with($this->quote);
916+
$typeInstanceMock->expects($this->once())
917+
->method('prepareForCartAdvanced')
918+
->will($this->returnValue([$productMock]));
919+
$this->productMock->expects($this->once())
920+
->method('getTypeInstance')
921+
->will($this->returnValue($typeInstanceMock));
922+
923+
$result = $this->quote->addProduct($this->productMock, null);
924+
$this->assertEquals($expectedResult, $result);
925+
}
926+
856927
public function testValidateMiniumumAmount()
857928
{
858929
$storeId = 1;

0 commit comments

Comments
 (0)