ResourceLoaderTest.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /**
  3. * Test for \Magento\Framework\Acl\Loader\ResourceLoader
  4. *
  5. * Copyright © Magento, Inc. All rights reserved.
  6. * See COPYING.txt for license details.
  7. */
  8. namespace Magento\Framework\Acl\Test\Unit\Loader;
  9. class ResourceLoaderTest extends \PHPUnit\Framework\TestCase
  10. {
  11. /**
  12. * Test for \Magento\Framework\Acl\Loader\ResourceLoader::populateAcl
  13. */
  14. public function testPopulateAclOnValidObjects()
  15. {
  16. /** @var $aclResource \Magento\Framework\Acl\AclResource */
  17. $aclResource = $this->createMock(\Magento\Framework\Acl\AclResource::class);
  18. /** @var $acl \Magento\Framework\Acl */
  19. $acl = $this->createPartialMock(\Magento\Framework\Acl::class, ['addResource']);
  20. $acl->expects($this->exactly(2))->method('addResource');
  21. $acl->expects($this->at(0))->method('addResource')->with($aclResource, null)->will($this->returnSelf());
  22. $acl->expects($this->at(1))->method('addResource')->with($aclResource, $aclResource)->will($this->returnSelf());
  23. $factoryObject = $this->createPartialMock(\Magento\Framework\Acl\AclResourceFactory::class, ['createResource']);
  24. $factoryObject->expects($this->any())->method('createResource')->will($this->returnValue($aclResource));
  25. /** @var $resourceProvider \Magento\Framework\Acl\AclResource\ProviderInterface */
  26. $resourceProvider = $this->createMock(\Magento\Framework\Acl\AclResource\ProviderInterface::class);
  27. $resourceProvider->expects($this->once())
  28. ->method('getAclResources')
  29. ->will(
  30. $this->returnValue(
  31. [
  32. [
  33. 'id' => 'parent_resource::id',
  34. 'title' => 'Parent Resource Title',
  35. 'sortOrder' => 10,
  36. 'children' => [
  37. [
  38. 'id' => 'child_resource::id',
  39. 'title' => 'Child Resource Title',
  40. 'sortOrder' => 10,
  41. 'children' => [],
  42. ],
  43. ],
  44. ],
  45. ]
  46. )
  47. );
  48. /** @var $loaderResource \Magento\Framework\Acl\Loader\ResourceLoader */
  49. $loaderResource = new \Magento\Framework\Acl\Loader\ResourceLoader($resourceProvider, $factoryObject);
  50. $loaderResource->populateAcl($acl);
  51. }
  52. /**
  53. * Test for \Magento\Framework\Acl\Loader\ResourceLoader::populateAcl
  54. *
  55. * @expectedException \InvalidArgumentException
  56. * @expectedExceptionMessage Missing ACL resource identifier
  57. */
  58. public function testPopulateAclWithException()
  59. {
  60. /** @var $aclResource \Magento\Framework\Acl\AclResource */
  61. $aclResource = $this->createMock(\Magento\Framework\Acl\AclResource::class);
  62. $factoryObject = $this->getMockBuilder(\Magento\Framework\Acl\AclResourceFactory::class)
  63. ->setMethods(['createResource'])
  64. ->disableOriginalConstructor()
  65. ->getMock();
  66. $factoryObject->expects($this->any())->method('createResource')->will($this->returnValue($aclResource));
  67. /** @var $resourceProvider \Magento\Framework\Acl\AclResource\ProviderInterface */
  68. $resourceProvider = $this->createMock(\Magento\Framework\Acl\AclResource\ProviderInterface::class);
  69. $resourceProvider->expects($this->once())
  70. ->method('getAclResources')
  71. ->will(
  72. $this->returnValue(
  73. [
  74. [
  75. 'title' => 'Parent Resource Title',
  76. 'sortOrder' => 10,
  77. 'children' => [
  78. [
  79. 'id' => 'child_resource::id',
  80. 'title' => 'Child Resource Title',
  81. 'sortOrder' => 10,
  82. 'children' => [],
  83. ],
  84. ],
  85. ],
  86. ]
  87. )
  88. );
  89. /** @var $acl \Magento\Framework\Acl */
  90. $acl = $this->createPartialMock(\Magento\Framework\Acl::class, ['addResource']);
  91. /** @var $loaderResource \Magento\Framework\Acl\Loader\ResourceLoader */
  92. $loaderResource = new \Magento\Framework\Acl\Loader\ResourceLoader($resourceProvider, $factoryObject);
  93. $loaderResource->populateAcl($acl);
  94. }
  95. }