Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
RollbackTest.php
Go to the documentation of this file.
1 <?php
7 
9 
14 class RollbackTest extends \PHPUnit\Framework\TestCase
15 {
19  private $objectManager;
20 
24  private $objectManagerMock;
25 
29  private $context;
30 
34  private $rollbackController;
35 
39  private $requestMock;
40 
44  private $responseMock;
45 
49  private $backupModelFactoryMock;
50 
54  private $backupModelMock;
55 
59  private $dataHelperMock;
60 
64  private $fileFactoryMock;
65 
69  private $resultRedirectFactoryMock;
70 
74  private $resultRedirectMock;
75 
79  private $resultForwardMock;
80 
84  private $backupFactoryMock;
85 
89  private $backupManagerMock;
90 
94  private $backupResourceModelMock;
95 
96  protected function setUp()
97  {
98  $this->objectManagerMock = $this->getMockBuilder(\Magento\Framework\ObjectManagerInterface::class)
99  ->getMock();
100  $this->requestMock = $this->getMockBuilder(\Magento\Framework\App\RequestInterface::class)
101  ->setMethods(['initForward', 'setDispatched', 'isAjax'])
102  ->getMockForAbstractClass();
103  $this->responseMock = $this->getMockBuilder(\Magento\Framework\App\ResponseInterface::class)
104  ->setMethods(['setRedirect', 'representJson'])
105  ->getMockForAbstractClass();
106  $this->backupModelFactoryMock = $this->getMockBuilder(\Magento\Backup\Model\BackupFactory::class)
107  ->disableOriginalConstructor()
108  ->setMethods(['create'])
109  ->getMock();
110  $this->backupModelMock = $this->getMockBuilder(\Magento\Backup\Model\Backup::class)
111  ->disableOriginalConstructor()
112  ->setMethods(['getTime', 'exists', 'getSize', 'output', 'validateUserPassword'])
113  ->getMock();
114  $this->backupResourceModelMock = $this->getMockBuilder(\Magento\Backup\Model\ResourceModel\Db::class)
115  ->disableOriginalConstructor()
116  ->getMock();
117  $this->dataHelperMock = $this->getMockBuilder(\Magento\Backup\Helper\Data::class)
118  ->disableOriginalConstructor()
119  ->setMethods(['isRollbackAllowed', 'getBackupsDir', 'invalidateCache'])
120  ->getMock();
121  $this->fileFactoryMock = $this->getMockBuilder(\Magento\Framework\App\Response\Http\FileFactory::class)
122  ->disableOriginalConstructor()
123  ->getMock();
124  $this->resultRedirectFactoryMock =
125  $this->getMockBuilder(\Magento\Backend\Model\View\Result\RedirectFactory::class)
126  ->disableOriginalConstructor()
127  ->setMethods(['create'])
128  ->getMock();
129  $this->resultRedirectMock = $this->getMockBuilder(\Magento\Backend\Model\View\Result\Redirect::class)
130  ->disableOriginalConstructor()
131  ->getMock();
132  $this->resultForwardMock = $this->getMockBuilder(\Magento\Backend\Model\View\Result\Forward::class)
133  ->disableOriginalConstructor()
134  ->getMock();
135  $this->backupFactoryMock = $this->getMockBuilder(\Magento\Framework\Backup\Factory::class)
136  ->disableOriginalConstructor()
137  ->setMethods(['create'])
138  ->getMock();
139  $this->backupManagerMock = $this->getMockBuilder(\Magento\Framework\Backup\BackupInterface::class)
140  ->setMethods(['setName'])
141  ->getMockForAbstractClass();
142  $this->objectManager = new ObjectManager($this);
143  $this->context = $this->objectManager->getObject(
144  \Magento\Backend\App\Action\Context::class,
145  [
146  'objectManager' => $this->objectManagerMock,
147  'request' => $this->requestMock,
148  'response' => $this->responseMock,
149  'resultRedirectFactory' => $this->resultRedirectFactoryMock,
150  ]
151  );
152  $this->rollbackController = $this->objectManager->getObject(
153  \Magento\Backup\Controller\Adminhtml\Index\Rollback::class,
154  [
155  'context' => $this->context,
156  'backupFactory' => $this->backupFactoryMock,
157  'backupModelFactory' => $this->backupModelFactoryMock,
158  'fileFactory' => $this->fileFactoryMock,
159  ]
160  );
161  }
162 
163  public function testExecuteRollbackDisabled()
164  {
165  $rollbackAllowed = false;
166 
167  $this->dataHelperMock->expects($this->once())
168  ->method('isRollbackAllowed')
169  ->willReturn($rollbackAllowed);
170  $this->objectManagerMock->expects($this->once())
171  ->method('get')
172  ->with(\Magento\Backup\Helper\Data::class)
173  ->willReturn($this->dataHelperMock);
174 
175  $this->assertSame($this->responseMock, $this->rollbackController->execute());
176  }
177 
178  public function testExecuteBackupNotFound()
179  {
180  $rollbackAllowed = true;
181  $isAjax = true;
182  $time = 0;
183  $type = 'db';
184  $exists = false;
185 
186  $this->dataHelperMock->expects($this->once())
187  ->method('isRollbackAllowed')
188  ->willReturn($rollbackAllowed);
189  $this->objectManagerMock->expects($this->atLeastOnce())
190  ->method('get')
191  ->with(\Magento\Backup\Helper\Data::class)
192  ->willReturn($this->dataHelperMock);
193  $this->requestMock->expects($this->once())
194  ->method('isAjax')
195  ->willReturn($isAjax);
196  $this->backupModelMock->expects($this->atLeastOnce())
197  ->method('getTime')
198  ->willReturn($time);
199  $this->backupModelMock->expects($this->any())
200  ->method('exists')
201  ->willReturn($exists);
202  $this->requestMock->expects($this->any())
203  ->method('getParam')
204  ->willReturnMap(
205  [
206  ['time', null, $time],
207  ['type', null, $type],
208  ]
209  );
210  $this->backupModelFactoryMock->expects($this->once())
211  ->method('create')
212  ->with($time, $type)
213  ->willReturn($this->backupModelMock);
214 
215  $this->assertSame($this->responseMock, $this->rollbackController->execute());
216  }
217 
218  public function testExecute()
219  {
220  $rollbackAllowed = true;
221  $isAjax = true;
222  $time = 1;
223  $type = 'db';
224  $exists = true;
225  $passwordValid = true;
226 
227  $this->dataHelperMock->expects($this->once())
228  ->method('isRollbackAllowed')
229  ->willReturn($rollbackAllowed);
230  $this->objectManagerMock->expects($this->any())
231  ->method('get')
232  ->with(\Magento\Backup\Helper\Data::class)
233  ->willReturn($this->dataHelperMock);
234  $this->requestMock->expects($this->once())
235  ->method('isAjax')
236  ->willReturn($isAjax);
237  $this->backupModelMock->expects($this->atLeastOnce())
238  ->method('getTime')
239  ->willReturn($time);
240  $this->backupModelMock->expects($this->any())
241  ->method('exists')
242  ->willReturn($exists);
243  $this->requestMock->expects($this->any())
244  ->method('getParam')
245  ->willReturnMap(
246  [
247  ['time', null, $time],
248  ['type', null, $type],
249  ]
250  );
251  $this->backupModelFactoryMock->expects($this->once())
252  ->method('create')
253  ->with($time, $type)
254  ->willReturn($this->backupModelMock);
255  $this->backupManagerMock->expects($this->once())
256  ->method('setBackupExtension')
257  ->willReturn($this->backupManagerMock);
258  $this->backupManagerMock->expects($this->once())
259  ->method('setTime')
260  ->willReturn($this->backupManagerMock);
261  $this->backupManagerMock->expects($this->once())
262  ->method('setBackupsDir')
263  ->willReturn($this->backupManagerMock);
264  $this->backupManagerMock->expects($this->once())
265  ->method('setName')
266  ->willReturn($this->backupManagerMock);
267  $this->backupManagerMock->expects($this->once())
268  ->method('setResourceModel')
269  ->willReturn($this->backupManagerMock);
270  $this->backupFactoryMock->expects($this->once())
271  ->method('create')
272  ->with($type)
273  ->willReturn($this->backupManagerMock);
274  $this->objectManagerMock->expects($this->at(2))
275  ->method('create')
276  ->with(\Magento\Backup\Model\ResourceModel\Db::class, [])
277  ->willReturn($this->backupResourceModelMock);
278  $this->objectManagerMock->expects($this->at(3))
279  ->method('create')
280  ->with(\Magento\Backup\Model\Backup::class, [])
281  ->willReturn($this->backupModelMock);
282  $this->backupModelMock->expects($this->once())
283  ->method('validateUserPassword')
284  ->willReturn($passwordValid);
285 
286  $this->rollbackController->execute();
287  }
288 }
$type
Definition: item.phtml:13