PageRenderTime 40ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/app/code/Magento/Variable/Test/Unit/Controller/Adminhtml/System/Variable/ValidateTest.php

https://gitlab.com/crazybutterfly815/magento2
PHP | 174 lines | 119 code | 20 blank | 35 comment | 1 complexity | 4a78a4f7ca12c4c20ad5142c7a81d78e MD5 | raw file
  1. <?php
  2. /**
  3. * Copyright © 2016 Magento. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Variable\Test\Unit\Controller\Adminhtml\System\Variable;
  7. /**
  8. * Class ValidateTest
  9. *
  10. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  11. */
  12. class ValidateTest extends \PHPUnit_Framework_TestCase
  13. {
  14. /**
  15. * @var \Magento\Variable\Model\Variable|\PHPUnit_Framework_MockObject_MockObject
  16. */
  17. protected $variableMock;
  18. /**
  19. * @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject
  20. */
  21. protected $layoutMock;
  22. /**
  23. * @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
  24. */
  25. protected $requestMock;
  26. /**
  27. * @var \Magento\Variable\Controller\Adminhtml\System\Variable\Validate | \PHPUnit_Framework_MockObject_MockObject
  28. */
  29. protected $validateMock;
  30. /**
  31. * @var \Magento\Framework\Controller\Result\Json | \PHPUnit_Framework_MockObject_MockObject
  32. */
  33. protected $resultJsonMock;
  34. /**
  35. * @var \Magento\Framework\Message\ManagerInterface | \PHPUnit_Framework_MockObject_MockObject
  36. */
  37. protected $messageManagerMock;
  38. protected function setUp()
  39. {
  40. $this->validateMock = $this->getMockBuilder(
  41. \Magento\Variable\Controller\Adminhtml\System\Variable\Validate::class
  42. )->disableOriginalConstructor()
  43. ->getMock();
  44. $this->variableMock = $this->getMockBuilder(
  45. \Magento\Variable\Model\Variable::class
  46. )->disableOriginalConstructor()
  47. ->getMock();
  48. $this->variableMock->expects($this->any())
  49. ->method('addData')
  50. ->willReturnSelf();
  51. $messagesMock = $this->getMockBuilder(\Magento\Framework\View\Element\Messages::class)
  52. ->disableOriginalConstructor()
  53. ->getMock();
  54. $this->layoutMock = $this->getMockBuilder(\Magento\Framework\View\LayoutInterface::class)
  55. ->setMethods(['initMessages', 'getMessagesBlock'])
  56. ->getMockForAbstractClass();
  57. $this->layoutMock->expects($this->any())
  58. ->method('getMessagesBlock')
  59. ->willReturn($messagesMock);
  60. $layoutFactoryMock = $this->getMockBuilder(\Magento\Framework\View\LayoutFactory::class)
  61. ->setMethods(['create'])
  62. ->disableOriginalConstructor()
  63. ->getMock();
  64. $layoutFactoryMock->expects($this->any())->method('create')->willReturn($this->layoutMock);
  65. $this->requestMock = $this->getMockBuilder(\Magento\Framework\App\RequestInterface::class)
  66. ->disableOriginalConstructor()
  67. ->setMethods(['getPost'])
  68. ->getMockForAbstractClass();
  69. $responseMock = $this->getMockBuilder(\Magento\Framework\App\ResponseInterface::class)
  70. ->setMethods(['setError', 'setHtmlMessage'])
  71. ->getMockForAbstractClass();
  72. $this->messageManagerMock = $this->getMockBuilder(\Magento\Framework\Message\ManagerInterface::class)
  73. ->getMockForAbstractClass();
  74. $contextMock = $this->getMockBuilder(\Magento\Backend\App\Action\Context::class)
  75. ->disableOriginalConstructor()
  76. ->getMock();
  77. $contextMock->expects($this->any())
  78. ->method('getRequest')->will($this->returnValue($this->requestMock));
  79. $contextMock->expects($this->any())
  80. ->method('getResponse')->will($this->returnValue($responseMock));
  81. $contextMock->expects($this->any())
  82. ->method('getMessageManager')->will($this->returnValue($this->messageManagerMock));
  83. $this->resultJsonMock = $this->getMockBuilder(\Magento\Framework\Controller\Result\Json::class)
  84. ->disableOriginalConstructor()
  85. ->getMock();
  86. $resultJsonFactoryMock = $this->getMockBuilder(\Magento\Framework\Controller\Result\JsonFactory::class)
  87. ->setMethods(['create'])
  88. ->disableOriginalConstructor()
  89. ->getMock();
  90. $resultJsonFactoryMock->expects($this->any())->method('create')->willReturn($this->resultJsonMock);
  91. $coreRegistryMock = $this->getMockBuilder(\Magento\Framework\Registry::class)
  92. ->disableOriginalConstructor()
  93. ->getMock();
  94. $this->validateMock = $this->getMockBuilder(
  95. \Magento\Variable\Controller\Adminhtml\System\Variable\Validate::class
  96. )->setConstructorArgs(
  97. [
  98. $contextMock,
  99. $coreRegistryMock,
  100. $this->getMockBuilder(\Magento\Backend\Model\View\Result\ForwardFactory::class)
  101. ->disableOriginalConstructor()->setMethods(['create'])->getMock(),
  102. $resultJsonFactoryMock,
  103. $this->getMockBuilder(\Magento\Framework\View\Result\PageFactory::class)
  104. ->disableOriginalConstructor()->setMethods(['create'])->getMock(),
  105. $layoutFactoryMock,
  106. ]
  107. )->setMethods(['_initVariable'])->getMock();
  108. $this->validateMock->expects($this->any())
  109. ->method('_initVariable')
  110. ->willReturn($this->variableMock);
  111. }
  112. /**
  113. * @param mixed $result
  114. * @param string[] $responseArray
  115. * @dataProvider executeDataProvider
  116. */
  117. public function testExecute($result, $responseArray)
  118. {
  119. $getParamMap = [
  120. ['variable_id', null, null],
  121. ['store', 0, 0],
  122. ];
  123. $this->requestMock->expects($this->any())
  124. ->method('getParam')->willReturnMap($getParamMap);
  125. $this->requestMock->expects($this->any())
  126. ->method('getPost')->with('variable')->will($this->returnValue([]));
  127. $this->variableMock->expects($this->any())
  128. ->method('validate')
  129. ->willReturn($result);
  130. if ($result instanceof \Magento\Framework\Phrase) {
  131. $this->messageManagerMock->expects($this->once())
  132. ->method('addError')
  133. ->with($result->getText());
  134. $this->layoutMock->expects($this->once())
  135. ->method('initMessages');
  136. }
  137. $this->resultJsonMock->expects($this->once())
  138. ->method('setData')
  139. ->with($responseArray);
  140. $this->validateMock->execute();
  141. }
  142. /**
  143. * @return array
  144. */
  145. public function executeDataProvider()
  146. {
  147. return [
  148. [ false, ['error' => false]],
  149. [ true, ['error' => false]],
  150. [ __('Variable Code must be unique.'), ['error' => true, 'html_message' => null]],
  151. [ __('Validation has failed.'), ['error' => true, 'html_message' => null]],
  152. ];
  153. }
  154. }