ScopeTreeProviderTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Store\Test\Unit\Model;
  7. use Magento\Store\Api\Data\WebsiteInterface;
  8. use Magento\Store\Api\Data\GroupInterface;
  9. use Magento\Store\Api\Data\StoreInterface;
  10. use Magento\Store\Model\Group;
  11. use Magento\Store\Model\ScopeTreeProvider;
  12. use Magento\Store\Model\Store;
  13. use Magento\Store\Model\StoreManagerInterface;
  14. use Magento\Store\Model\ScopeInterface;
  15. use Magento\Framework\App\Config\ScopeConfigInterface;
  16. use Magento\Store\Model\Website;
  17. class ScopeTreeProviderTest extends \PHPUnit\Framework\TestCase
  18. {
  19. /** @var ScopeTreeProvider */
  20. protected $model;
  21. /** @var StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject */
  22. protected $storeManagerMock;
  23. protected function setUp()
  24. {
  25. $this->storeManagerMock = $this->getMockBuilder(\Magento\Store\Model\StoreManagerInterface::class)
  26. ->getMockForAbstractClass();
  27. $this->model = new ScopeTreeProvider($this->storeManagerMock);
  28. }
  29. public function testGet()
  30. {
  31. $websiteId = 1;
  32. $groupId = 2;
  33. $storeId = 3;
  34. $storeData = [
  35. 'scope' => ScopeInterface::SCOPE_STORES,
  36. 'scope_id' => $storeId,
  37. 'scopes' => [],
  38. ];
  39. $groupData = [
  40. 'scope' => ScopeInterface::SCOPE_GROUP,
  41. 'scope_id' => $groupId,
  42. 'scopes' => [$storeData, $storeData, $storeData],
  43. ];
  44. $websiteData = [
  45. 'scope' => ScopeInterface::SCOPE_WEBSITES,
  46. 'scope_id' => $websiteId,
  47. 'scopes' => [$groupData, $groupData],
  48. ];
  49. $result = [
  50. 'scope' => ScopeConfigInterface::SCOPE_TYPE_DEFAULT,
  51. 'scope_id' => null,
  52. 'scopes' => [$websiteData],
  53. ];
  54. /** @var Website|\PHPUnit_Framework_MockObject_MockObject $websiteMock */
  55. $websiteMock = $this->getMockBuilder(\Magento\Store\Model\Website::class)
  56. ->disableOriginalConstructor()
  57. ->getMock();
  58. $websiteMock->expects($this->any())
  59. ->method('getId')
  60. ->willReturn($websiteId);
  61. /** @var Group|\PHPUnit_Framework_MockObject_MockObject $groupMock */
  62. $groupMock = $this->getMockBuilder(\Magento\Store\Model\Group::class)
  63. ->disableOriginalConstructor()
  64. ->getMock();
  65. $groupMock->expects($this->any())
  66. ->method('getId')
  67. ->willReturn($groupId);
  68. /** @var Store|\PHPUnit_Framework_MockObject_MockObject $storeMock */
  69. $storeMock = $this->getMockBuilder(\Magento\Store\Model\Store::class)
  70. ->disableOriginalConstructor()
  71. ->getMock();
  72. $storeMock->expects($this->any())
  73. ->method('getId')
  74. ->willReturn($storeId);
  75. $this->storeManagerMock->expects($this->any())
  76. ->method('getWebsites')
  77. ->willReturn([$websiteMock]);
  78. $websiteMock->expects($this->any())
  79. ->method('getGroups')
  80. ->willReturn([$groupMock, $groupMock]);
  81. $groupMock->expects($this->any())
  82. ->method('getStores')
  83. ->willReturn([$storeMock, $storeMock, $storeMock]);
  84. $this->assertEquals($result, $this->model->get());
  85. }
  86. }