BookmarkManagementTest.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Ui\Test\Unit\Model;
  7. use Magento\Framework\Api\Filter;
  8. use Magento\Ui\Model\BookmarkManagement;
  9. /**
  10. * Class BookmarkManagementTest
  11. */
  12. class BookmarkManagementTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /**
  15. * @var BookmarkManagement
  16. */
  17. protected $bookmarkManagement;
  18. /**
  19. * @var \Magento\Ui\Api\BookmarkRepositoryInterface|\PHPUnit_Framework_MockObject_MockObject
  20. */
  21. protected $bookmarkRepository;
  22. /**
  23. * @var \Magento\Framework\Api\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
  24. */
  25. protected $filterBuilder;
  26. /**
  27. * @var \Magento\Framework\Api\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
  28. */
  29. protected $searchCriteriaBuilder;
  30. /**
  31. * @var \Magento\Authorization\Model\UserContextInterface|\PHPUnit_Framework_MockObject_MockObject
  32. */
  33. protected $userContext;
  34. protected function setUp()
  35. {
  36. $this->bookmarkRepository = $this->getMockBuilder(\Magento\Ui\Api\BookmarkRepositoryInterface::class)
  37. ->getMockForAbstractClass();
  38. $this->filterBuilder = $this->getMockBuilder(\Magento\Framework\Api\FilterBuilder::class)
  39. ->disableOriginalConstructor()
  40. ->setMethods(['create'])
  41. ->getMock();
  42. $this->searchCriteriaBuilder =$this->getMockBuilder(\Magento\Framework\Api\SearchCriteriaBuilder::class)
  43. ->disableOriginalConstructor()
  44. ->getMock();
  45. $this->userContext = $this->getMockBuilder(\Magento\Authorization\Model\UserContextInterface::class)
  46. ->getMockForAbstractClass();
  47. $this->bookmarkManagement = new BookmarkManagement(
  48. $this->bookmarkRepository,
  49. $this->filterBuilder,
  50. $this->searchCriteriaBuilder,
  51. $this->userContext
  52. );
  53. }
  54. public function testLoadByNamespace()
  55. {
  56. $userId = 1;
  57. $namespace = 'some_namespace';
  58. $this->userContext->expects($this->once())
  59. ->method('getUserId')
  60. ->willReturn($userId);
  61. $fieldUserId = new Filter(
  62. [
  63. Filter::KEY_FIELD => 'user_id',
  64. Filter::KEY_VALUE => $userId,
  65. Filter::KEY_CONDITION_TYPE => 'eq'
  66. ]
  67. );
  68. $fieldNamespace = new Filter(
  69. [
  70. Filter::KEY_FIELD => 'namespace',
  71. Filter::KEY_VALUE => $namespace,
  72. Filter::KEY_CONDITION_TYPE => 'eq'
  73. ]
  74. );
  75. $searchCriteria = $this->getMockBuilder(\Magento\Framework\Api\SearchCriteriaInterface::class)
  76. ->getMockForAbstractClass();
  77. $this->filterBuilder->expects($this->at(0))
  78. ->method('create')
  79. ->willReturn($fieldUserId);
  80. $this->filterBuilder->expects($this->at(1))
  81. ->method('create')
  82. ->willReturn($fieldNamespace);
  83. $this->searchCriteriaBuilder->expects($this->exactly(2))
  84. ->method('addFilters')
  85. ->withConsecutive([[$fieldUserId]], [[$fieldNamespace]]);
  86. $this->searchCriteriaBuilder->expects($this->once())
  87. ->method('create')
  88. ->willReturn($searchCriteria);
  89. $searchResult = $this->getMockBuilder(\Magento\Ui\Api\Data\BookmarkSearchResultsInterface::class)
  90. ->getMockForAbstractClass();
  91. $this->bookmarkRepository->expects($this->once())
  92. ->method('getList')
  93. ->with($searchCriteria)
  94. ->willReturn($searchResult);
  95. $this->assertEquals($searchResult, $this->bookmarkManagement->loadByNamespace($namespace));
  96. }
  97. public function testGetByIdentifierNamespace()
  98. {
  99. $userId = 1;
  100. $namespace = 'some_namespace';
  101. $identifier ='current';
  102. $this->userContext->expects($this->once())
  103. ->method('getUserId')
  104. ->willReturn($userId);
  105. $fieldUserId = new Filter(
  106. [
  107. Filter::KEY_FIELD => 'user_id',
  108. Filter::KEY_VALUE => $userId,
  109. Filter::KEY_CONDITION_TYPE => 'eq'
  110. ]
  111. );
  112. $fieldIdentifier = new Filter(
  113. [
  114. Filter::KEY_FIELD => 'identifier',
  115. Filter::KEY_VALUE => $identifier,
  116. Filter::KEY_CONDITION_TYPE => 'eq'
  117. ]
  118. );
  119. $fieldNamespace = new Filter(
  120. [
  121. Filter::KEY_FIELD => 'namespace',
  122. Filter::KEY_VALUE => $namespace,
  123. Filter::KEY_CONDITION_TYPE => 'eq'
  124. ]
  125. );
  126. $bookmarkId = 1;
  127. $bookmark = $this->getMockBuilder(\Magento\Ui\Api\Data\BookmarkInterface::class)->getMockForAbstractClass();
  128. $bookmark->expects($this->once())->method('getId')->willReturn($bookmarkId);
  129. $searchCriteria = $this->getMockBuilder(\Magento\Framework\Api\SearchCriteriaInterface::class)
  130. ->getMockForAbstractClass();
  131. $this->filterBuilder->expects($this->at(0))
  132. ->method('create')
  133. ->willReturn($fieldUserId);
  134. $this->filterBuilder->expects($this->at(1))
  135. ->method('create')
  136. ->willReturn($fieldIdentifier);
  137. $this->filterBuilder->expects($this->at(2))
  138. ->method('create')
  139. ->willReturn($fieldNamespace);
  140. $this->searchCriteriaBuilder->expects($this->exactly(3))
  141. ->method('addFilters')
  142. ->withConsecutive([[$fieldUserId]], [[$fieldIdentifier]], [[$fieldNamespace]]);
  143. $this->searchCriteriaBuilder->expects($this->once())
  144. ->method('create')
  145. ->willReturn($searchCriteria);
  146. $searchResult = $this->getMockBuilder(\Magento\Ui\Api\Data\BookmarkSearchResultsInterface::class)
  147. ->getMockForAbstractClass();
  148. $searchResult->expects($this->once())->method('getTotalCount')->willReturn(1);
  149. $searchResult->expects($this->once())->method('getItems')->willReturn([$bookmark]);
  150. $this->bookmarkRepository->expects($this->once())
  151. ->method('getList')
  152. ->with($searchCriteria)
  153. ->willReturn($searchResult);
  154. $this->bookmarkRepository->expects($this->once())
  155. ->method('getById')
  156. ->with($bookmarkId)
  157. ->willReturn($bookmark);
  158. $this->assertEquals(
  159. $bookmark,
  160. $this->bookmarkManagement->getByIdentifierNamespace($identifier, $namespace)
  161. );
  162. }
  163. }