/** * Retrieve quote model object * * @return \Magento\Quote\Model\Quote */ public function getQuote() { if ($this->_quote === null) { $this->_quote = $this->quoteFactory->create(); if ($this->getStoreId()) { if (!$this->getQuoteId()) { $this->_quote->setCustomerGroupId($this->groupManagement->getDefaultGroup()->getId()); $this->_quote->setIsActive(false); $this->_quote->setStoreId($this->getStoreId()); $this->quoteRepository->save($this->_quote); $this->setQuoteId($this->_quote->getId()); $this->_quote = $this->quoteRepository->get($this->getQuoteId(), [$this->getStoreId()]); } else { $this->_quote = $this->quoteRepository->get($this->getQuoteId(), [$this->getStoreId()]); $this->_quote->setStoreId($this->getStoreId()); } if ($this->getCustomerId() && $this->getCustomerId() != $this->_quote->getCustomerId()) { $customer = $this->customerRepository->getById($this->getCustomerId()); $this->_quote->assignCustomer($customer); $this->quoteRepository->save($this->_quote); } } $this->_quote->setIgnoreOldQty(true); $this->_quote->setIsSuperMode(true); } return $this->_quote; }
/** * @param array $productTypes * @param int $expected * @dataProvider dataProviderForTestBeforeSaveIsVirtualQuote */ public function testBeforeSaveIsVirtualQuote(array $productTypes, $expected) { $storeId = 1; $currencyMock = $this->getMockBuilder('Magento\\Directory\\Model\\Currency')->disableOriginalConstructor()->getMock(); $currencyMock->expects($this->any())->method('getCode')->will($this->returnValue('test_code')); $currencyMock->expects($this->any())->method('getRate')->will($this->returnValue('test_rate')); $storeMock = $this->getMockBuilder('Magento\\Store\\Model\\Store')->disableOriginalConstructor()->getMock(); $storeMock->expects($this->once())->method('getBaseCurrency')->will($this->returnValue($currencyMock)); $storeMock->expects($this->once())->method('getCurrentCurrency')->will($this->returnValue($currencyMock)); $this->storeManagerMock->expects($this->any())->method('getStore')->with($storeId)->will($this->returnValue($storeMock)); $this->quote->setStoreId($storeId); $collectionMock = $this->getMock('Magento\\Quote\\Model\\Resource\\Quote\\Item\\Collection', [], [], '', false); $items = []; foreach ($productTypes as $type) { $productMock = $this->getMock('\\Magento\\Catalog\\Model\\Product', [], [], '', false); $productMock->expects($this->any())->method('getIsVirtual')->willReturn($type); $itemMock = $this->getMock('Magento\\Quote\\Model\\Quote\\Item', ['isDeleted', 'getParentItemId', 'getProduct'], [], '', false); $itemMock->expects($this->any())->method('isDeleted')->willReturn(false); $itemMock->expects($this->any())->method('getParentItemId')->willReturn(false); $itemMock->expects($this->any())->method('getProduct')->willReturn($productMock); $items[] = $itemMock; } $iterator = new \ArrayIterator($items); $collectionMock->expects($this->any())->method('getIterator')->will($this->returnValue($iterator)); $this->quoteItemCollectionFactoryMock->expects($this->once())->method('create')->will($this->returnValue($collectionMock)); $this->quote->beforeSave(); $this->assertEquals($expected, $this->quote->getDataByKey(CartInterface::KEY_IS_VIRTUAL)); }
public function testValidateMiniumumAmountNegative() { $storeId = 1; $this->quote->setStoreId($storeId); $valueMap = [['sales/minimum_order/active', ScopeInterface::SCOPE_STORE, $storeId, true], ['sales/minimum_order/multi_address', ScopeInterface::SCOPE_STORE, $storeId, true], ['sales/minimum_order/amount', ScopeInterface::SCOPE_STORE, $storeId, 20], ['sales/minimum_order/tax_including', ScopeInterface::SCOPE_STORE, $storeId, true]]; $this->scopeConfig->expects($this->any())->method('isSetFlag')->will($this->returnValueMap($valueMap)); $this->quoteAddressMock->expects($this->once())->method('validateMinimumAmount')->willReturn(false); $this->quoteAddressCollectionMock->expects($this->once())->method('setQuoteFilter')->willReturn([$this->quoteAddressMock]); $this->assertFalse($this->quote->validateMinimumAmount()); }