public function testGetInfoBlockHtml() { list($storeId, $blockHtml, $secureMode, $blockType) = [1, 'HTML MARKUP', true, 'method_block_type']; $methodMock = $this->getMockBuilder('Magento\\Payment\\Model\\MethodInterface')->getMockForAbstractClass(); $infoMock = $this->getMockBuilder('Magento\\Payment\\Model\\Info')->disableOriginalConstructor()->setMethods([])->getMock(); $paymentBlockMock = $this->getMockBuilder('Magento\\Framework\\View\\Element\\BlockInterface')->disableOriginalConstructor()->setMethods(['setArea', 'setIsSecureMode', 'getMethod', 'setStore', 'toHtml', 'setInfo'])->getMock(); $this->appEmulation->expects($this->once())->method('startEnvironmentEmulation')->with($storeId); $infoMock->expects($this->once())->method('getMethodInstance')->willReturn($methodMock); $methodMock->expects($this->once())->method('getInfoBlockType')->willReturn($blockType); $this->layoutMock->expects($this->once())->method('createBlock')->with($blockType)->willReturn($paymentBlockMock); $paymentBlockMock->expects($this->once())->method('setInfo')->with($infoMock); $paymentBlockMock->expects($this->once())->method('setArea')->with(\Magento\Framework\App\Area::AREA_FRONTEND)->willReturnSelf(); $paymentBlockMock->expects($this->once())->method('setIsSecureMode')->with($secureMode); $paymentBlockMock->expects($this->once())->method('getMethod')->willReturn($methodMock); $methodMock->expects($this->once())->method('setStore')->with($storeId); $paymentBlockMock->expects($this->once())->method('toHtml')->willReturn($blockHtml); $this->appEmulation->expects($this->once())->method('stopEnvironmentEmulation'); $this->assertEquals($blockHtml, $this->helper->getInfoBlockHtml($infoMock, $storeId)); }
/** * Get payment info block as html * * @param Order $order * @return string */ protected function getPaymentHtml(Order $order) { return $this->paymentHelper->getInfoBlockHtml($order->getPayment(), $this->identityContainer->getStore()->getStoreId()); }
/** * Send email with order data * * @return $this */ public function sendNewOrderEmail() { $storeId = $this->getStore()->getId(); if (!$this->_salesData->canSendNewOrderEmail($storeId)) { return $this; } // Get the destination email addresses to send copies to $copyTo = $this->_getEmails(self::XML_PATH_EMAIL_COPY_TO); $copyMethod = $this->_scopeConfig->getValue(self::XML_PATH_EMAIL_COPY_METHOD, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); $paymentBlockHtml = $this->_paymentData->getInfoBlockHtml($this->getPayment(), $storeId); // Retrieve corresponding email template id and customer name if ($this->getCustomerIsGuest()) { $templateId = $this->_scopeConfig->getValue(self::XML_PATH_EMAIL_GUEST_TEMPLATE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); $customerName = $this->getBillingAddress()->getName(); } else { $templateId = $this->_scopeConfig->getValue(self::XML_PATH_EMAIL_TEMPLATE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); $customerName = $this->getCustomerName(); } $this->_transportBuilder->setTemplateIdentifier($templateId)->setTemplateOptions(array('area' => \Magento\Framework\App\Area::AREA_FRONTEND, 'store' => $storeId))->setTemplateVars(array('order' => $this, 'billing' => $this->getBillingAddress(), 'payment_html' => $paymentBlockHtml, 'store' => $this->getStore()))->setFrom($this->_scopeConfig->getValue(self::XML_PATH_EMAIL_IDENTITY, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId))->addTo($this->getCustomerEmail(), $customerName); if ($copyTo && $copyMethod == 'bcc') { // Add bcc to customer email foreach ($copyTo as $email) { $this->_transportBuilder->addBcc($email); } } /** @var \Magento\Framework\Mail\TransportInterface $transport */ $transport = $this->_transportBuilder->getTransport(); $transport->sendMessage(); // Email copies are sent as separated emails if their copy method is 'copy' if ($copyTo && $copyMethod == 'copy') { foreach ($copyTo as $email) { $this->_transportBuilder->setTemplateIdentifier($templateId)->setTemplateOptions(array('area' => \Magento\Framework\App\Area::AREA_FRONTEND, 'store' => $storeId))->setTemplateVars(array('order' => $this, 'billing' => $this->getBillingAddress(), 'payment_html' => $paymentBlockHtml, 'store' => $this->getStore()))->setFrom($this->_scopeConfig->getValue(self::XML_PATH_EMAIL_IDENTITY, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId))->addTo($email)->getTransport()->sendMessage(); } } $this->setEmailSent(true); $this->_getResource()->saveAttribute($this, 'email_sent'); return $this; }