Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CleanMediaTest.php
Go to the documentation of this file.
1 <?php
8 
12 class CleanMediaTest extends \PHPUnit\Framework\TestCase
13 {
14  public function testExecute()
15  {
16  // Wire object with mocks
17  $response = $this->createMock(\Magento\Framework\App\Response\Http::class);
18  $request = $this->createMock(\Magento\Framework\App\Request\Http::class);
19 
20  $objectManager = $this->createMock(\Magento\Framework\ObjectManagerInterface::class);
21  $backendHelper = $this->createMock(\Magento\Backend\Helper\Data::class);
22  $helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
23 
24  $session = $this->getMockBuilder(\Magento\Backend\Model\Session::class)
25  ->setMethods(['setIsUrlNotice'])
26  ->setConstructorArgs($helper->getConstructArguments(\Magento\Backend\Model\Session::class))
27  ->getMock();
28 
29  $exceptionMessageFactory = $this->getMockBuilder(
30  \Magento\Framework\Message\ExceptionMessageLookupFactory::class
31  )
32  ->disableOriginalConstructor()
33  ->setMethods(
34  ['getMessageGenerator']
35  )
36  ->getMock();
37 
38  $messageManagerParams = $helper->getConstructArguments(\Magento\Framework\Message\Manager::class);
39  $messageManagerParams['exceptionMessageFactory'] = $exceptionMessageFactory;
40  $messageManager = $this->getMockBuilder(\Magento\Framework\Message\Manager::class)
41  ->setMethods(['addSuccessMessage'])
42  ->setConstructorArgs($messageManagerParams)
43  ->getMock();
44 
45  $args = $helper->getConstructArguments(
46  \Magento\Backend\App\Action\Context::class,
47  [
48  'session' => $session,
49  'response' => $response,
50  'objectManager' => $objectManager,
51  'helper' => $backendHelper,
52  'request' => $request,
53  'messageManager' => $messageManager
54  ]
55  );
56  $context = $this->getMockBuilder(\Magento\Backend\App\Action\Context::class)
57  ->setMethods(['getRequest', 'getResponse', 'getMessageManager', 'getSession', 'getResultFactory'])
58  ->setConstructorArgs($args)
59  ->getMock();
60  $resultFactory = $this->getMockBuilder(\Magento\Framework\Controller\ResultFactory::class)
61  ->disableOriginalConstructor()
62  ->setMethods(['create'])
63  ->getMock();
64  $resultRedirect = $this->getMockBuilder(\Magento\Backend\Model\View\Result\Redirect::class)
65  ->disableOriginalConstructor()
66  ->getMock();
67  $resultFactory->expects($this->atLeastOnce())
68  ->method('create')
69  ->with(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT)
70  ->willReturn($resultRedirect);
71  $context->expects($this->once())->method('getRequest')->willReturn($request);
72  $context->expects($this->once())->method('getResponse')->willReturn($response);
73  $context->expects($this->once())->method('getSession')->willReturn($session);
74  $context->expects($this->once())->method('getMessageManager')->willReturn($messageManager);
75  $context->expects($this->once())->method('getResultFactory')->willReturn($resultFactory);
76 
77  $controller = $helper->getObject(
78  \Magento\Backend\Controller\Adminhtml\Cache\CleanMedia::class,
79  [
80  'context' => $context
81  ]
82  );
83 
84  // Setup expectations
85  $mergeService = $this->createMock(\Magento\Framework\View\Asset\MergeService::class);
86  $mergeService->expects($this->once())->method('cleanMergedJsCss');
87 
88  $messageManager->expects($this->once())
89  ->method('addSuccessMessage')
90  ->with('The JavaScript/CSS cache has been cleaned.');
91 
92  $valueMap = [
93  [\Magento\Framework\View\Asset\MergeService::class, $mergeService],
94  [\Magento\Framework\Session\SessionManager::class, $session],
95  ];
96  $objectManager->expects($this->any())->method('get')->will($this->returnValueMap($valueMap));
97 
98  $resultRedirect->expects($this->once())
99  ->method('setPath')
100  ->with('adminhtml/*')
101  ->willReturnSelf();
102 
103  // Run
104  $controller->execute();
105  }
106 }
$response
Definition: 404.php:11
$helper
Definition: iframe.phtml:13
$objectManager
Definition: bootstrap.php:17
$controller
Definition: info.phtml:14