Пример #1
0
 /**
  * {@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;
     }, [])];
 }
Пример #2
0
 /**
  * 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;
 }
Пример #3
0
 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());
 }
Пример #4
0
 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));
 }
Пример #5
0
 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());
 }
Пример #6
0
 /**
  * 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;
 }
Пример #7
0
 /**
  * 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;
 }