123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Test\Unit\Controller\Adminhtml\Order;
- use Magento\Framework\App\Action\Context;
- use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
- use Magento\Sales\Controller\Adminhtml\Order\Email;
- /**
- * Class EmailTest
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @package Magento\Sales\Controller\Adminhtml\Order
- */
- class EmailTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var Email
- */
- protected $orderEmail;
- /**
- * @var Context|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $context;
- /**
- * @var \Magento\Backend\Model\View\Result\Redirect|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $resultRedirect;
- /**
- * @var \Magento\Framework\App\Request\Http|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $request;
- /**
- * @var \Magento\Framework\App\ResponseInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $response;
- /**
- * @var \Magento\Framework\Message\Manager|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $messageManager;
- /**
- * @var \Magento\Framework\ObjectManager\ObjectManager|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $objectManager;
- /**
- * @var \Magento\Backend\Model\Session|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $session;
- /**
- * @var \Magento\Framework\App\ActionFlag|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $actionFlag;
- /**
- * @var \Magento\Backend\Helper\Data|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $helper;
- /**
- * @var \Magento\Sales\Api\OrderManagementInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $orderManagementMock;
- /**
- * @var \Magento\Sales\Api\OrderRepositoryInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $orderRepositoryMock;
- /**
- * @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $loggerMock;
- /**
- * @var \Magento\Sales\Api\Data\OrderInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $orderMock;
- /**
- * Test setup
- */
- protected function setUp()
- {
- $objectManagerHelper = new ObjectManagerHelper($this);
- $this->context = $this->createPartialMock(\Magento\Backend\App\Action\Context::class, [
- 'getRequest',
- 'getResponse',
- 'getMessageManager',
- 'getRedirect',
- 'getObjectManager',
- 'getSession',
- 'getActionFlag',
- 'getHelper',
- 'getResultRedirectFactory'
- ]);
- $this->orderManagementMock = $this->getMockBuilder(\Magento\Sales\Api\OrderManagementInterface::class)
- ->getMockForAbstractClass();
- $this->orderRepositoryMock = $this->getMockBuilder(\Magento\Sales\Api\OrderRepositoryInterface::class)
- ->getMockForAbstractClass();
- $this->loggerMock = $this->getMockBuilder(\Psr\Log\LoggerInterface::class)
- ->getMockForAbstractClass();
- $resultRedirectFactory = $this->createPartialMock(
- \Magento\Backend\Model\View\Result\RedirectFactory::class,
- ['create']
- );
- $this->response = $this->createPartialMock(
- \Magento\Framework\App\ResponseInterface::class,
- ['setRedirect', 'sendResponse']
- );
- $this->request = $this->getMockBuilder(\Magento\Framework\App\Request\Http::class)
- ->disableOriginalConstructor()->getMock();
- $this->messageManager = $this->createPartialMock(
- \Magento\Framework\Message\Manager::class,
- ['addSuccessMessage', 'addErrorMessage']
- );
- $this->orderMock = $this->getMockBuilder(\Magento\Sales\Api\Data\OrderInterface::class)
- ->getMockForAbstractClass();
- $this->session = $this->createPartialMock(\Magento\Backend\Model\Session::class, ['setIsUrlNotice']);
- $this->actionFlag = $this->createPartialMock(\Magento\Framework\App\ActionFlag::class, ['get', 'set']);
- $this->helper = $this->createPartialMock(\Magento\Backend\Helper\Data::class, ['getUrl']);
- $this->resultRedirect = $this->createMock(\Magento\Backend\Model\View\Result\Redirect::class);
- $resultRedirectFactory->expects($this->any())->method('create')->willReturn($this->resultRedirect);
- $this->context->expects($this->once())->method('getMessageManager')->willReturn($this->messageManager);
- $this->context->expects($this->once())->method('getRequest')->willReturn($this->request);
- $this->context->expects($this->once())->method('getResponse')->willReturn($this->response);
- $this->context->expects($this->once())->method('getObjectManager')->willReturn($this->objectManager);
- $this->context->expects($this->once())->method('getSession')->willReturn($this->session);
- $this->context->expects($this->once())->method('getActionFlag')->willReturn($this->actionFlag);
- $this->context->expects($this->once())->method('getHelper')->willReturn($this->helper);
- $this->context->expects($this->once())->method('getResultRedirectFactory')->willReturn($resultRedirectFactory);
- $this->orderEmail = $objectManagerHelper->getObject(
- \Magento\Sales\Controller\Adminhtml\Order\Email::class,
- [
- 'context' => $this->context,
- 'request' => $this->request,
- 'response' => $this->response,
- 'orderManagement' => $this->orderManagementMock,
- 'orderRepository' => $this->orderRepositoryMock,
- 'logger' => $this->loggerMock
- ]
- );
- }
- /**
- * testEmail
- */
- public function testEmail()
- {
- $orderId = 10000031;
- $this->request->expects($this->once())
- ->method('getParam')
- ->with('order_id')
- ->will($this->returnValue($orderId));
- $this->orderRepositoryMock->expects($this->once())
- ->method('get')
- ->with($orderId)
- ->willReturn($this->orderMock);
- $this->orderMock->expects($this->atLeastOnce())
- ->method('getEntityId')
- ->will($this->returnValue($orderId));
- $this->orderManagementMock->expects($this->once())
- ->method('notify')
- ->with($orderId)
- ->willReturn(true);
- $this->messageManager->expects($this->once())
- ->method('addSuccessMessage')
- ->with('You sent the order email.');
- $this->resultRedirect->expects($this->once())
- ->method('setPath')
- ->with('sales/order/view', ['order_id' => $orderId])
- ->willReturnSelf();
- $this->assertInstanceOf(
- \Magento\Backend\Model\View\Result\Redirect::class,
- $this->orderEmail->execute()
- );
- $this->assertEquals($this->response, $this->orderEmail->getResponse());
- }
- /**
- * testEmailNoOrderId
- */
- public function testEmailNoOrderId()
- {
- $this->request->expects($this->once())
- ->method('getParam')
- ->with('order_id')
- ->will($this->returnValue(null));
- $this->orderRepositoryMock->expects($this->once())
- ->method('get')
- ->with(null)
- ->willThrowException(
- new \Magento\Framework\Exception\NoSuchEntityException(
- __("The entity that was requested doesn't exist. Verify the entity and try again.")
- )
- );
- $this->messageManager->expects($this->once())
- ->method('addErrorMessage')
- ->with('This order no longer exists.');
- $this->actionFlag->expects($this->once())
- ->method('set')
- ->with('', 'no-dispatch', true)
- ->will($this->returnValue(true));
- $this->resultRedirect->expects($this->once())
- ->method('setPath')
- ->with('sales/*/')
- ->willReturnSelf();
- $this->assertInstanceOf(
- \Magento\Backend\Model\View\Result\Redirect::class,
- $this->orderEmail->execute()
- );
- }
- }
|