EditTest.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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;
  7. /**
  8. * Class EditTest to cover Magento\User\Block\Role\Edit
  9. *
  10. */
  11. class EditTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /** @var \Magento\User\Block\Role\Edit|\PHPUnit_Framework_MockObject_MockObject */
  14. protected $model;
  15. /** @var \Magento\Framework\Json\EncoderInterface|\PHPUnit_Framework_MockObject_MockObject */
  16. protected $jsonEncoderMock;
  17. /** @var \Magento\Backend\Model\Auth\Session|\PHPUnit_Framework_MockObject_MockObject */
  18. protected $authSessionsMock;
  19. /** @var \Magento\Framework\Registry|\PHPUnit_Framework_MockObject_MockObject */
  20. protected $registryMock;
  21. /** @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject */
  22. protected $layoutInterfaceMock;
  23. /**
  24. * Set required values
  25. * @return void
  26. */
  27. protected function setUp()
  28. {
  29. $this->jsonEncoderMock = $this->getMockBuilder(\Magento\Framework\Json\EncoderInterface::class)
  30. ->disableOriginalConstructor()
  31. ->setMethods([])
  32. ->getMock();
  33. $this->authSessionsMock = $this->getMockBuilder(\Magento\Backend\Model\Auth\Session::class)
  34. ->disableOriginalConstructor()
  35. ->setMethods([])
  36. ->getMock();
  37. $this->registryMock = $this->getMockBuilder(\Magento\Framework\Registry::class)
  38. ->disableOriginalConstructor()
  39. ->setMethods([])
  40. ->getMock();
  41. $this->layoutInterfaceMock = $this->getMockBuilder(\Magento\Framework\View\LayoutInterface::class)
  42. ->disableOriginalConstructor()
  43. ->setMethods(['setRole', 'setActive', 'getId'])
  44. ->getMockForAbstractClass();
  45. $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  46. $this->model = $objectManagerHelper->getObject(
  47. \Magento\User\Block\Role\Edit::class,
  48. [
  49. 'jsonEncoder' => $this->jsonEncoderMock,
  50. 'authSession' => $this->authSessionsMock,
  51. 'registry' => $this->registryMock,
  52. 'layout' => $this->layoutInterfaceMock
  53. ]
  54. );
  55. }
  56. public function testPrepareLayoutSuccessOnFalseGetId()
  57. {
  58. $tab = 'tab';
  59. $this->registryMock->expects($this->once())->method('registry')->willReturn($this->layoutInterfaceMock);
  60. $this->layoutInterfaceMock->expects($this->any())->method('createBlock')->willReturnSelf();
  61. $this->layoutInterfaceMock->expects($this->once())->method('setRole')->willReturnSelf();
  62. $this->layoutInterfaceMock->expects($this->once())->method('setActive')->willReturn($tab);
  63. $this->layoutInterfaceMock->expects($this->once())->method('getId')->willReturn(false);
  64. $this->assertInstanceOf(
  65. \Magento\Backend\Block\Widget\Tabs::class,
  66. $this->invokeMethod($this->model, '_prepareLayout')
  67. );
  68. }
  69. /**
  70. * Call protected/private method of a class.
  71. *
  72. * @param object &$object
  73. * @param string $methodName
  74. * @param array $parameters
  75. *
  76. * @return mixed Method return.
  77. */
  78. private function invokeMethod(&$object, $methodName, array $parameters = [])
  79. {
  80. $reflection = new \ReflectionClass(get_class($object));
  81. $method = $reflection->getMethod($methodName);
  82. $method->setAccessible(true);
  83. return $method->invokeArgs($object, $parameters);
  84. }
  85. }