/** * {@inheritdoc} */ public function getSectionData() { $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getSectionData'); if (!$pluginInfo) { return parent::getSectionData(); } else { return $this->___callPlugins('getSectionData', func_get_args(), $pluginInfo); } }
/** * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function testGetSectionDataWithCompositeProduct() { $summaryQty = 100; $subtotalValue = 200; $productId = 10; $storeId = 20; $productRewrite = [$productId => ['rewrite' => 'product']]; $itemData = ['item' => 'data']; $shortcutButtonsHtml = '<span>Buttons</span>'; $subtotalMock = $this->getMock('\\Magento\\Framework\\DataObject', ['getValue'], [], '', false); $subtotalMock->expects($this->once())->method('getValue')->willReturn($subtotalValue); $totals = ['subtotal' => $subtotalMock]; $quoteMock = $this->getMock('\\Magento\\Quote\\Model\\Quote', ['getTotals', 'getHasError', 'getAllVisibleItems'], [], '', false); $quoteItemMock = $this->getMock('\\Magento\\Quote\\Model\\Quote\\Item', ['getProduct', 'getOptionByCode', 'getStoreId'], [], '', false); $this->checkoutSessionMock->expects($this->exactly(2))->method('getQuote')->willReturn($quoteMock); $quoteMock->expects($this->once())->method('getTotals')->willReturn($totals); $quoteMock->expects($this->once())->method('getHasError')->willReturn(false); $this->checkoutCartMock->expects($this->once())->method('getSummaryQty')->willReturn($summaryQty); $this->checkoutHelperMock->expects($this->once())->method('formatPrice')->with($subtotalValue)->willReturn($subtotalValue); $this->checkoutHelperMock->expects($this->once())->method('canOnepageCheckout')->willReturn(true); $quoteMock->expects($this->once())->method('getAllVisibleItems')->willReturn([$quoteItemMock]); $productMock = $this->getMock('\\Magento\\Catalog\\Model\\Product', ['isVisibleInSiteVisibility', 'getId', 'setUrlDataObject'], [], '', false); $optionsMock = $this->getMock('\\Magento\\Quote\\Model\\Quote\\Item\\Option', [], [], '', false); $optionsMock->expects($this->once())->method('getProduct')->willReturn($productMock); $quoteItemMock->expects($this->exactly(2))->method('getProduct')->willReturn($productMock); $quoteItemMock->expects($this->exactly(2))->method('getOptionByCode')->with('product_type')->willReturn($optionsMock); $quoteItemMock->expects($this->once())->method('getStoreId')->willReturn($storeId); $productMock->expects($this->once())->method('isVisibleInSiteVisibility')->willReturn(false); $productMock->expects($this->exactly(3))->method('getId')->willReturn($productId); $productMock->expects($this->once())->method('setUrlDataObject')->with(new \Magento\Framework\DataObject($productRewrite[$productId]))->willReturnSelf(); $this->catalogUrlMock->expects($this->once())->method('getRewriteByProductStore')->with([$productId => $storeId])->willReturn($productRewrite); $shortcutButtonsMock = $this->getMock('\\Magento\\Catalog\\Block\\ShortcutButtons', [], [], '', false); $this->layoutMock->expects($this->once())->method('createBlock')->with('Magento\\Catalog\\Block\\ShortcutButtons')->willReturn($shortcutButtonsMock); $shortcutButtonsMock->expects($this->once())->method('toHtml')->willReturn($shortcutButtonsHtml); $this->checkoutHelperMock->expects($this->once())->method('isAllowedGuestCheckout')->with($quoteMock)->willReturn(true); $this->itemPoolInterfaceMock->expects($this->once())->method('getItemData')->with($quoteItemMock)->willReturn($itemData); $expectedResult = ['summary_count' => 100, 'subtotal' => 200, 'possible_onepage_checkout' => 1, 'items' => [['item' => 'data']], 'extra_actions' => '<span>Buttons</span>', 'isGuestCheckoutAllowed' => 1]; $this->assertEquals($expectedResult, $this->model->getSectionData()); }