UserTest.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\User\Test\Unit\Block\Role\Grid;
  7. /**
  8. * Class UserTest to cover Magento\User\Block\Role\Grid\User
  9. *
  10. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  11. */
  12. class UserTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /** @var \Magento\User\Block\Role\Grid\User */
  15. protected $model;
  16. /** @var \Magento\Backend\Helper\Data|\PHPUnit_Framework_MockObject_MockObject */
  17. protected $backendHelperMock;
  18. /** @var \Magento\Framework\Json\EncoderInterface|\PHPUnit_Framework_MockObject_MockObject */
  19. protected $jsonEncoderMock;
  20. /** @var \Magento\Framework\Registry|\PHPUnit_Framework_MockObject_MockObject */
  21. protected $registryMock;
  22. /** @var \Magento\Authorization\Model\RoleFactory|\PHPUnit_Framework_MockObject_MockObject */
  23. protected $roleFactoryMock;
  24. /** @var \Magento\User\Model\ResourceModel\Role\User\CollectionFactory|\PHPUnit_Framework_MockObject_MockObject */
  25. protected $userRolesFactoryMock;
  26. /** @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject */
  27. protected $requestInterfaceMock;
  28. /** @var \Magento\Framework\UrlInterface|\PHPUnit_Framework_MockObject_MockObject */
  29. protected $urlInterfaceMock;
  30. /** @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject */
  31. protected $layoutMock;
  32. /** @var \Magento\Framework\Filesystem|\PHPUnit_Framework_MockObject_MockObject */
  33. protected $filesystemMock;
  34. protected function setUp()
  35. {
  36. $this->backendHelperMock = $this->getMockBuilder(\Magento\Backend\Helper\Data::class)
  37. ->disableOriginalConstructor()
  38. ->setMethods([])
  39. ->getMock();
  40. $this->jsonEncoderMock = $this->getMockBuilder(\Magento\Framework\Json\EncoderInterface::class)
  41. ->disableOriginalConstructor()
  42. ->setMethods([])
  43. ->getMock();
  44. $this->registryMock = $this->getMockBuilder(\Magento\Framework\Registry::class)
  45. ->disableOriginalConstructor()
  46. ->setMethods([])
  47. ->getMock();
  48. $this->roleFactoryMock = $this->getMockBuilder(\Magento\Authorization\Model\RoleFactory::class)
  49. ->disableOriginalConstructor()
  50. ->setMethods(['create'])
  51. ->getMock();
  52. $this->userRolesFactoryMock = $this
  53. ->getMockBuilder(\Magento\User\Model\ResourceModel\Role\User\CollectionFactory::class)
  54. ->disableOriginalConstructor()
  55. ->setMethods(['create'])
  56. ->getMock();
  57. $this->requestInterfaceMock = $this->getMockBuilder(\Magento\Framework\App\RequestInterface::class)
  58. ->disableOriginalConstructor()
  59. ->setMethods([])
  60. ->getMock();
  61. $this->urlInterfaceMock = $this->getMockBuilder(\Magento\Framework\UrlInterface::class)
  62. ->disableOriginalConstructor()
  63. ->setMethods([])
  64. ->getMock();
  65. $this->layoutMock = $this->getMockBuilder(\Magento\Framework\View\LayoutInterface::class)
  66. ->disableOriginalConstructor()
  67. ->setMethods([])
  68. ->getMock();
  69. $this->filesystemMock = $this->getMockBuilder(\Magento\Framework\Filesystem::class)
  70. ->disableOriginalConstructor()
  71. ->setMethods([])
  72. ->getMock();
  73. $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  74. $this->model = $objectManagerHelper->getObject(
  75. \Magento\User\Block\Role\Grid\User::class,
  76. [
  77. 'backendHelper' => $this->backendHelperMock,
  78. 'jsonEncoder' => $this->jsonEncoderMock,
  79. 'coreRegistry' => $this->registryMock,
  80. 'roleFactory' => $this->roleFactoryMock,
  81. 'userRolesFactory' => $this->userRolesFactoryMock,
  82. 'request' => $this->requestInterfaceMock,
  83. 'urlBuilder' => $this->urlInterfaceMock,
  84. 'layout' => $this->layoutMock,
  85. 'filesystem' => $this->filesystemMock
  86. ]
  87. );
  88. }
  89. public function testGetGridUrlSuccessfulUrl()
  90. {
  91. $roleId = 1;
  92. $url = 'http://Success';
  93. $this->requestInterfaceMock->expects($this->once())->method('getParam')->willReturn($roleId);
  94. $this->urlInterfaceMock->expects($this->once())->method('getUrl')->willReturn($url);
  95. $this->assertEquals($url, $this->model->getGridUrl());
  96. }
  97. public function testGetUsersPositiveNumberOfRolesAndJsonFalse()
  98. {
  99. $roleId = 1;
  100. $roles = ['role1', 'role2', 'role3'];
  101. /** @var \Magento\Authorization\Model\Role|\PHPUnit_Framework_MockObject_MockObject */
  102. $roleModelMock = $this->getMockBuilder(\Magento\Authorization\Model\Role::class)
  103. ->disableOriginalConstructor()
  104. ->setMethods([])
  105. ->getMock();
  106. $this->requestInterfaceMock->expects($this->at(0))->method('getParam')->willReturn("");
  107. $this->requestInterfaceMock->expects($this->at(1))->method('getParam')->willReturn($roleId);
  108. $this->requestInterfaceMock->expects($this->at(2))->method('getParam')->willReturn($roleId);
  109. $this->registryMock->expects($this->once())
  110. ->method('registry')
  111. ->with(\Magento\User\Controller\Adminhtml\User\Role\SaveRole::IN_ROLE_USER_FORM_DATA_SESSION_KEY)
  112. ->willReturn(null);
  113. $this->roleFactoryMock->expects($this->once())->method('create')->willReturn($roleModelMock);
  114. $roleModelMock->expects($this->once())->method('setId')->willReturnSelf();
  115. $roleModelMock->expects($this->once())->method('getRoleUsers')->willReturn($roles);
  116. $this->assertEquals($roles, $this->model->getUsers());
  117. }
  118. public function testGetUsersPositiveNumberOfRolesAndJsonTrue()
  119. {
  120. $roleId = 1;
  121. $roles = ['role1', 'role2', 'role3'];
  122. /** @var \Magento\Authorization\Model\Role|\PHPUnit_Framework_MockObject_MockObject */
  123. $roleModelMock = $this->getMockBuilder(\Magento\Authorization\Model\Role::class)
  124. ->disableOriginalConstructor()
  125. ->setMethods([])
  126. ->getMock();
  127. $this->requestInterfaceMock->expects($this->at(0))->method('getParam')->willReturn("");
  128. $this->requestInterfaceMock->expects($this->at(1))->method('getParam')->willReturn($roleId);
  129. $this->requestInterfaceMock->expects($this->at(2))->method('getParam')->willReturn($roleId);
  130. $this->registryMock->expects($this->once())
  131. ->method('registry')
  132. ->with(\Magento\User\Controller\Adminhtml\User\Role\SaveRole::IN_ROLE_USER_FORM_DATA_SESSION_KEY)
  133. ->willReturn('role1=value1&role2=value2&role3=value3');
  134. $this->roleFactoryMock->expects($this->never())->method('create')->willReturn($roleModelMock);
  135. $this->jsonEncoderMock->expects($this->once())->method('encode')->willReturn($roles);
  136. $this->assertEquals($roles, $this->model->getUsers(true));
  137. }
  138. public function testGetUsersNoRolesAndJsonFalse()
  139. {
  140. $roleId = 1;
  141. $roles = [];
  142. /** @var \Magento\Authorization\Model\Role|\PHPUnit_Framework_MockObject_MockObject */
  143. $roleModelMock = $this->getMockBuilder(\Magento\Authorization\Model\Role::class)
  144. ->disableOriginalConstructor()
  145. ->setMethods([])
  146. ->getMock();
  147. $this->requestInterfaceMock->expects($this->at(0))->method('getParam')->willReturn("");
  148. $this->requestInterfaceMock->expects($this->at(1))->method('getParam')->willReturn($roleId);
  149. $this->requestInterfaceMock->expects($this->at(2))->method('getParam')->willReturn($roleId);
  150. $this->registryMock->expects($this->once())
  151. ->method('registry')
  152. ->with(\Magento\User\Controller\Adminhtml\User\Role\SaveRole::IN_ROLE_USER_FORM_DATA_SESSION_KEY)
  153. ->willReturn(null);
  154. $this->roleFactoryMock->expects($this->once())->method('create')->willReturn($roleModelMock);
  155. $roleModelMock->expects($this->once())->method('setId')->willReturnSelf();
  156. $roleModelMock->expects($this->once())->method('getRoleUsers')->willReturn($roles);
  157. $this->assertEquals($roles, $this->model->getUsers());
  158. }
  159. public function testPrepareColumns()
  160. {
  161. $this->requestInterfaceMock->expects($this->any())->method('getParam')->willReturn(1);
  162. $layoutBlockMock = $this->getMockBuilder(\Magento\Framework\View\LayoutInterface::class)
  163. ->disableOriginalConstructor()
  164. ->setMethods([])
  165. ->getMock();
  166. $blockMock = $this->getMockBuilder(\Magento\Framework\View\Element\AbstractBlock::class)
  167. ->disableOriginalConstructor()
  168. ->setMethods(['setGrid', 'setId', 'setData', 'getLayout', 'getChildNames', 'isAvailable'])
  169. ->setMockClassName('mainblock')
  170. ->getMock();
  171. $blockMock->expects($this->any())->method('getLayout')->willReturn($layoutBlockMock);
  172. $this->layoutMock->expects($this->any())->method('getChildName')->willReturn('name');
  173. $this->layoutMock->expects($this->any())->method('getBlock')->willReturn($blockMock);
  174. $this->layoutMock->expects($this->any())->method('createBlock')->willReturn($blockMock);
  175. $blockMock->expects($this->any())->method('isAvailable')->willReturn(false);
  176. $blockMock->expects($this->any())->method('setData')->willReturnSelf();
  177. $blockMock->expects($this->any())->method('setGrid')->willReturnSelf();
  178. $blockMock->expects($this->any())->method('getChildNames')->willReturn(['column']);
  179. $layoutBlockMock->expects($this->any())->method('getChildName')->willReturn('name');
  180. $layoutBlockMock->expects($this->any())->method('getBlock')->willReturn($blockMock);
  181. $layoutBlockMock->expects($this->any())->method('createBlock')->willReturn($blockMock);
  182. $directoryMock = $this->getMockBuilder(\Magento\Framework\Filesystem\Directory\ReadInterface::class)
  183. ->disableOriginalConstructor()
  184. ->setMethods([])
  185. ->getMock();
  186. $this->filesystemMock->expects($this->any())->method('getDirectoryRead')->willReturn($directoryMock);
  187. $directoryMock->expects($this->any())->method('getRelativePath')->willReturn('filename');
  188. $blockMock->expects($this->exactly(7))->method('setId')->withConsecutive(
  189. ['in_role_users'],
  190. ['role_user_id'],
  191. ['role_user_username'],
  192. ['role_user_firstname'],
  193. ['role_user_lastname'],
  194. ['role_user_email'],
  195. ['role_user_is_active']
  196. )->willReturnSelf();
  197. $this->model->toHtml();
  198. }
  199. }