![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/magento/framework/Message/Test/Unit/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\Message\Test\Unit; use Exception; use Magento\Framework\Event\ManagerInterface; use Magento\Framework\Message\Collection; use Magento\Framework\Message\CollectionFactory; use Magento\Framework\Message\Error; use Magento\Framework\Message\ExceptionMessageLookupFactory; use Magento\Framework\Message\Factory; use Magento\Framework\Message\Manager; use Magento\Framework\Message\MessageInterface; use Magento\Framework\Message\Session; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; /** * \Magento\Framework\Message\Manager test case * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class ManagerTest extends TestCase { /** * @var ObjectManager */ protected $objectManager; /** * @var Factory|MockObject */ protected $messageFactory; /** * @var CollectionFactory|MockObject */ protected $messagesFactory; /** * @var Session|MockObject */ protected $session; /** * @var ManagerInterface|MockObject */ protected $eventManager; /** * @var Manager */ protected $model; /** * @var MessageInterface|MockObject */ protected $messageMock; /** * @var LoggerInterface|MockObject */ private $logger; /** * @var ExceptionMessageLookupFactory|MockObject */ private $exceptionMessageFactory; /** * @inheritdoc */ protected function setUp(): void { $this->messagesFactory = $this->getMockBuilder(CollectionFactory::class) ->disableOriginalConstructor() ->getMock(); $this->messageFactory = $this->getMockBuilder( Factory::class ) ->disableOriginalConstructor() ->getMock(); $this->session = $this->getMockBuilder(Session::class) ->disableOriginalConstructor() ->onlyMethods(['getData']) ->addMethods(['setData']) ->getMock(); $this->eventManager = $this->getMockForAbstractClass(ManagerInterface::class); $this->logger = $this->getMockForAbstractClass(LoggerInterface::class); $this->exceptionMessageFactory = $this->getMockBuilder( ExceptionMessageLookupFactory::class ) ->disableOriginalConstructor() ->getMock(); $this->messageMock = $this->getMockForAbstractClass(MessageInterface::class); $this->objectManager = new ObjectManager($this); $this->model = new Manager( $this->session, $this->messageFactory, $this->messagesFactory, $this->eventManager, $this->logger, Manager::DEFAULT_GROUP, $this->exceptionMessageFactory ); } /** * @return void */ public function testGetDefaultGroup(): void { $this->assertEquals(Manager::DEFAULT_GROUP, $this->model->getDefaultGroup()); } /** * @return void */ public function testGetMessages(): void { $messageCollection = $this->getMockBuilder(Collection::class) ->disableOriginalConstructor() ->onlyMethods(['addMessage'])->getMock(); $this->messagesFactory->expects($this->atLeastOnce()) ->method('create') ->willReturn($messageCollection); $this->session ->method('getData') ->withConsecutive([Manager::DEFAULT_GROUP], [Manager::DEFAULT_GROUP]) ->willReturnOnConsecutiveCalls(null, $messageCollection); $this->session ->method('setData') ->with(Manager::DEFAULT_GROUP, $messageCollection) ->willReturn($this->session); $this->eventManager->expects($this->never())->method('dispatch'); $this->assertEquals($messageCollection, $this->model->getMessages()); } /** * @return void */ public function testGetMessagesWithClear(): void { $messageCollection = $this->getMockBuilder(Collection::class) ->disableOriginalConstructor() ->onlyMethods(['addMessage', 'clear'])->getMock(); $messageCollection->expects($this->once())->method('clear'); $this->session->expects($this->any()) ->method('getData') ->with(Manager::DEFAULT_GROUP) ->willReturn($messageCollection); $this->eventManager->expects($this->once())->method('dispatch')->with('session_abstract_clear_messages'); $this->assertEquals($messageCollection, $this->model->getMessages(true)); } /** * @return void */ public function testAddExceptionWithAlternativeText(): void { $exceptionMessage = 'exception message'; $alternativeText = 'alternative text'; $this->logger->expects($this->once()) ->method('critical'); $messageError = $this->getMockBuilder(Error::class) ->setConstructorArgs(['text' => $alternativeText]) ->getMock(); $this->messageFactory->expects($this->atLeastOnce()) ->method('create') ->with(MessageInterface::TYPE_ERROR, $alternativeText) ->willReturn($messageError); $messageCollection = $this->getMockBuilder(Collection::class)->disableOriginalConstructor() ->onlyMethods(['addMessage'])->getMock(); $messageCollection->expects($this->atLeastOnce())->method('addMessage')->with($messageError); $this->session->expects($this->atLeastOnce()) ->method('getData') ->with(Manager::DEFAULT_GROUP) ->willReturn($messageCollection); $exception = new Exception($exceptionMessage); $this->assertEquals($this->model, $this->model->addException($exception, $alternativeText)); } /** * @return void */ public function testAddExceptionRenderable(): void { $exceptionMessage = 'exception message'; $exception = new Exception($exceptionMessage); $this->logger->expects($this->once())->method('critical'); $message = $this->getMockForAbstractClass(MessageInterface::class); $this->messageFactory->expects($this->never())->method('create'); $this->exceptionMessageFactory->expects($this->once()) ->method('createMessage') ->with($exception) ->willReturn($message); $messageCollection = $this->getMockBuilder(Collection::class)->disableOriginalConstructor() ->onlyMethods(['addMessage'])->getMock(); $messageCollection->expects($this->atLeastOnce())->method('addMessage')->with($message); $this->session->expects($this->atLeastOnce()) ->method('getData') ->with(Manager::DEFAULT_GROUP) ->willReturn($messageCollection); $this->assertEquals($this->model, $this->model->addExceptionMessage($exception)); } /** * @param string $type * @param string $methodName * * @return void * @dataProvider addMessageDataProvider */ public function testAddMessage($type, $methodName): void { $this->assertFalse($this->model->hasMessages()); $message = 'Message'; $messageCollection = $this->createPartialMock(Collection::class, ['addMessage']); $this->session->expects($this->any()) ->method('getData') ->willReturn($messageCollection); $this->eventManager->expects($this->once()) ->method('dispatch')->with('session_abstract_add_message'); $this->messageFactory->expects($this->once()) ->method('create')->with($type, $message) ->willReturn($this->messageMock); $this->model->$methodName($message, 'group'); $this->assertTrue($this->model->hasMessages()); } /** * @return array */ public function addMessageDataProvider(): array { return [ 'error' => [MessageInterface::TYPE_ERROR, 'addError'], 'warning' => [MessageInterface::TYPE_WARNING, 'addWarning'], 'notice' => [MessageInterface::TYPE_NOTICE, 'addNotice'], 'success' => [MessageInterface::TYPE_SUCCESS, 'addSuccess'] ]; } /** * @param MockObject $messages * @param string $expectation * * @return void * @dataProvider addUniqueMessagesWhenMessagesImplementMessageInterfaceDataProvider */ public function testAddUniqueMessagesWhenMessagesImplementMessageInterface($messages, $expectation): void { $messageCollection = $this->createPartialMock(Collection::class, ['getItems', 'addMessage']); $this->session->expects($this->any()) ->method('getData') ->willReturn($messageCollection); $messageCollection ->expects($this->once()) ->method('getItems') ->willReturn([new TestingMessage('text')]); $messageCollection->expects($this->$expectation())->method('addMessage'); $this->model->addUniqueMessages([$messages]); } /** * @return array */ public function addUniqueMessagesWhenMessagesImplementMessageInterfaceDataProvider(): array { return [ 'message_text_is_unique' => [ new TestingMessage('text1'), 'once', ], 'message_text_already_exists' => [ new TestingMessage('text'), 'never' ] ]; } /** * @param string|array $messages * * @return void * @dataProvider addUniqueMessagesDataProvider */ public function testAddUniqueMessages($messages): void { $messageCollection = $this->createPartialMock(Collection::class, ['getItems', 'addMessage']); $this->session->expects($this->any()) ->method('getData') ->willReturn($messageCollection); $messageCollection ->expects($this->any()) ->method('getItems') ->willReturn(['message']); $messageCollection->expects($this->never())->method('addMessage'); $this->model->addUniqueMessages($messages); } /** * @return array */ public function addUniqueMessagesDataProvider(): array { return [ 'messages_are_text' => [['message']], 'messages_are_empty' => [[]] ]; } /** * @return void */ public function testAddMessages(): void { $messageCollection = $this->createPartialMock(Collection::class, ['getItems', 'addMessage']); $this->session->expects($this->any()) ->method('getData') ->willReturn($messageCollection); $this->eventManager->expects($this->once()) ->method('dispatch')->with('session_abstract_add_message'); $messageCollection->expects($this->once())->method('addMessage')->with($this->messageMock); $this->model->addMessages([$this->messageMock]); } }