/** * {@inheritdoc} */ public function getSectionData() { $messages = $this->messageManager->getMessages(true); return ['messages' => array_reduce($messages->getItems(), function (array $result, MessageInterface $message) { $result[] = ['type' => $message->getType(), 'text' => $this->interpretationStrategy->interpret($message)]; return $result; }, [])]; }
/** * Return messages array and clean message manager messages * * @return array */ protected function getMessages() { $messages = $this->getCookiesMessages(); /** @var MessageInterface $message */ foreach ($this->messageManager->getMessages(true)->getItems() as $message) { $messages[] = ['type' => $message->getType(), 'text' => $this->interpretationStrategy->interpret($message)]; } return $messages; }
public function testGetSectionData() { $msgType = 'error'; $msgText = 'All is lost'; $msg = $this->getMockBuilder('Magento\\Framework\\Message\\MessageInterface')->getMock(); $messages = [$msg]; $msgCollection = $this->getMockBuilder('Magento\\Framework\\Message\\Collection')->getMock(); $msg->expects($this->once())->method('getType')->willReturn($msgType); $this->messageInterpretationStrategy->expects(static::once())->method('interpret')->with($msg)->willReturn($msgText); $this->messageManager->expects($this->once())->method('getMessages')->with(true, null)->willReturn($msgCollection); $msgCollection->expects($this->once())->method('getItems')->willReturn($messages); $this->assertEquals(['messages' => [['type' => $msgType, 'text' => $msgText]]], $this->object->getSectionData()); }
public function testAfterRenderResultWithWrongArray() { $messageType = 'message1type'; $messageText = 'message1text'; $messages = [['type' => $messageType, 'text' => $messageText]]; /** @var Redirect|\PHPUnit_Framework_MockObject_MockObject $resultMock */ $resultMock = $this->getMockBuilder(Redirect::class)->disableOriginalConstructor()->getMock(); /** @var PublicCookieMetadata|\PHPUnit_Framework_MockObject_MockObject $cookieMetadataMock */ $cookieMetadataMock = $this->getMockBuilder(PublicCookieMetadata::class)->disableOriginalConstructor()->getMock(); $this->cookieMetadataFactoryMock->expects($this->once())->method('createPublicCookieMetadata')->willReturn($cookieMetadataMock); $this->cookieManagerMock->expects($this->once())->method('setPublicCookie')->with(MessagePlugin::MESSAGES_COOKIES_NAME, \Zend_Json::encode($messages), $cookieMetadataMock); $this->cookieManagerMock->expects($this->once())->method('getCookie')->with(MessagePlugin::MESSAGES_COOKIES_NAME, \Zend_Json::encode([]))->willReturn(\Zend_Json::encode('string')); $this->dataMock->expects($this->any())->method('jsonDecode')->willReturnCallback(function ($data) { return \Zend_Json::decode($data); }); $this->dataMock->expects($this->any())->method('jsonEncode')->willReturnCallback(function ($data) { return \Zend_Json::encode($data); }); /** @var MessageInterface|\PHPUnit_Framework_MockObject_MockObject $messageMock */ $messageMock = $this->getMockBuilder(MessageInterface::class)->getMock(); $messageMock->expects($this->once())->method('getType')->willReturn($messageType); $this->interpretationStrategyMock->expects($this->once())->method('interpret')->with($messageMock)->willReturn($messageText); /** @var Collection|\PHPUnit_Framework_MockObject_MockObject $collectionMock */ $collectionMock = $this->getMockBuilder(Collection::class)->disableOriginalConstructor()->getMock(); $collectionMock->expects($this->once())->method('getItems')->willReturn([$messageMock]); $this->managerMock->expects($this->once())->method('getMessages')->with(true, null)->willReturn($collectionMock); $this->assertEquals($resultMock, $this->model->afterRenderResult($resultMock, $resultMock)); }
public function testGetGroupedHtml() { $this->messages->setNameInLayout('nameInLayout'); $resultHtml = '<div class="messages">'; $resultHtml .= '<div class="message message-error error"><div data-ui-id="nameinlayout-message-error" >'; $resultHtml .= 'Error message without HTML!'; $resultHtml .= '</div></div>'; $resultHtml .= '<div class="message message-warning warning"><div data-ui-id="nameinlayout-message-warning" >'; $resultHtml .= 'Warning message with <strong>HTML</strong>!'; $resultHtml .= '</div></div>'; $resultHtml .= '<div class="message message-warning warning"><div data-ui-id="nameinlayout-message-warning" >'; $resultHtml .= 'Warning message with <strong>HTML</strong>!'; $resultHtml .= '</div></div>'; $resultHtml .= '<div class="message message-notice notice"><div data-ui-id="nameinlayout-message-notice" >'; $resultHtml .= 'Notice message without HTML!'; $resultHtml .= '</div></div>'; $resultHtml .= '<div class="message message-notice notice"><div data-ui-id="nameinlayout-message-notice" >'; $resultHtml .= 'Notice message without HTML!'; $resultHtml .= '</div></div>'; $resultHtml .= '<div class="message message-notice notice"><div data-ui-id="nameinlayout-message-notice" >'; $resultHtml .= 'Notice message without HTML!'; $resultHtml .= '</div></div>'; $resultHtml .= '<div class="message message-success success"><div data-ui-id="nameinlayout-message-success" >'; $resultHtml .= 'Success message with <strong>HTML</strong>!'; $resultHtml .= '</div></div>'; $resultHtml .= '<div class="message message-success success"><div data-ui-id="nameinlayout-message-success" >'; $resultHtml .= 'Success message with <strong>HTML</strong>!'; $resultHtml .= '</div></div>'; $resultHtml .= '<div class="message message-success success"><div data-ui-id="nameinlayout-message-success" >'; $resultHtml .= 'Success message with <strong>HTML</strong>!'; $resultHtml .= '</div></div>'; $resultHtml .= '<div class="message message-success success"><div data-ui-id="nameinlayout-message-success" >'; $resultHtml .= 'Success message with <strong>HTML</strong>!'; $resultHtml .= '</div></div>'; $resultHtml .= '</div>'; $errorMock = $this->getMockBuilder('Magento\\Framework\\Message\\MessageInterface')->getMockForAbstractClass(); $warningMock = $this->getMockBuilder('Magento\\Framework\\Message\\MessageInterface')->getMockForAbstractClass(); $noticeMock = $this->getMockBuilder('Magento\\Framework\\Message\\MessageInterface')->getMockForAbstractClass(); $successMock = $this->getMockBuilder('Magento\\Framework\\Message\\MessageInterface')->getMockForAbstractClass(); $this->messageInterpretationStrategy->expects(static::any())->method('interpret')->willReturnMap([[$errorMock, 'Error message without HTML!'], [$warningMock, 'Warning message with <strong>HTML</strong>!'], [$noticeMock, 'Notice message without HTML!'], [$successMock, 'Success message with <strong>HTML</strong>!']]); $collectionMock = $this->initMessageCollection(); $collectionMock->expects($this->exactly(4))->method('getItemsByType')->willReturnMap([[MessageInterface::TYPE_ERROR, [$errorMock]], [MessageInterface::TYPE_WARNING, [$warningMock, $warningMock]], [MessageInterface::TYPE_NOTICE, [$noticeMock, $noticeMock, $noticeMock]], [MessageInterface::TYPE_SUCCESS, [$successMock, $successMock, $successMock, $successMock]]]); $this->assertEquals($resultHtml, $this->messages->getGroupedHtml()); }
/** * Render messages in HTML format grouped by type * * @return string */ protected function _renderMessagesByType() { $html = ''; foreach ($this->getMessageTypes() as $type) { if ($messages = $this->getMessagesByType($type)) { if (!$html) { $html .= '<' . $this->firstLevelTagName . ' class="messages">'; } foreach ($messages as $message) { $html .= '<' . $this->secondLevelTagName . ' class="message ' . 'message-' . $type . ' ' . $type . '">'; $html .= '<' . $this->contentWrapTagName . $this->getUiId('message', $type) . '>'; $html .= $this->interpretationStrategy->interpret($message); $html .= '</' . $this->contentWrapTagName . '>'; $html .= '</' . $this->secondLevelTagName . '>'; } } } if ($html) { $html .= '</' . $this->firstLevelTagName . '>'; } return $html; }
/** * Retrieve item messages * Return array with keys * * text => the message text * type => type of a message * * @return array */ public function getMessages() { $messages = []; $quoteItem = $this->getItem(); // Add basic messages occurring during this page load $baseMessages = $quoteItem->getMessage(false); if ($baseMessages) { foreach ($baseMessages as $message) { $messages[] = ['text' => $message, 'type' => $quoteItem->getHasError() ? 'error' : 'notice']; } } /* @var $collection \Magento\Framework\Message\Collection */ $collection = $this->messageManager->getMessages(true, 'quote_item' . $quoteItem->getId()); if ($collection) { $additionalMessages = $collection->getItems(); foreach ($additionalMessages as $message) { /* @var $message \Magento\Framework\Message\MessageInterface */ $messages[] = ['text' => $this->messageInterpretationStrategy->interpret($message), 'type' => $message->getType()]; } } $this->messageManager->getMessages(true, 'quote_item' . $quoteItem->getId())->clear(); return $messages; }