GroupRepositoryTest.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Eav\Model\Attribute;
  7. use Magento\Eav\Api\AttributeGroupRepositoryInterface;
  8. use Magento\Eav\Model\Entity\Attribute\Set;
  9. use Magento\Framework\Api\FilterBuilder;
  10. use Magento\Framework\Api\SearchCriteriaBuilder;
  11. use Magento\Framework\Api\SortOrder;
  12. use Magento\Framework\Api\SortOrderBuilder;
  13. use Magento\TestFramework\Helper\Bootstrap;
  14. class GroupRepositoryTest extends \PHPUnit\Framework\TestCase
  15. {
  16. /**
  17. * @var AttributeGroupRepositoryInterface
  18. */
  19. private $repository;
  20. protected function setUp()
  21. {
  22. $this->repository = Bootstrap::getObjectManager()->create(AttributeGroupRepositoryInterface::class);
  23. }
  24. /**
  25. * @magentoDataFixture Magento/Eav/_files/attribute_group_for_search.php
  26. */
  27. public function testGetList()
  28. {
  29. /** @var Set $attributeSet */
  30. $attributeSet = Bootstrap::getObjectManager()->create(Set::class)
  31. ->load('attribute_set_1_for_search', 'attribute_set_name');
  32. /** @var FilterBuilder $filterBuilder */
  33. $filterBuilder = Bootstrap::getObjectManager()->create(FilterBuilder::class);
  34. $filter1 = $filterBuilder->setField('attribute_set_id')
  35. ->setValue($attributeSet->getId())
  36. ->create();
  37. $filter2 = $filterBuilder->setField('default_id')
  38. ->setValue(0)
  39. ->setConditionType('eq')
  40. ->create();
  41. $filter3 = $filterBuilder->setField('sort_order')
  42. ->setValue(10)
  43. ->setConditionType('gteq')
  44. ->create();
  45. $filter4 = $filterBuilder->setField('sort_order')
  46. ->setValue(30)
  47. ->setConditionType('lteq')
  48. ->create();
  49. /** @var SearchCriteriaBuilder $searchCriteriaBuilder */
  50. $searchCriteriaBuilder = Bootstrap::getObjectManager()->create(SearchCriteriaBuilder::class);
  51. $searchCriteriaBuilder->addFilters([$filter1, $filter2]);
  52. $searchCriteriaBuilder->addFilters([$filter3, $filter4]);
  53. /** @var SortOrderBuilder $sortOrderBuilder */
  54. $sortOrderBuilder = Bootstrap::getObjectManager()->create(SortOrderBuilder::class);
  55. /** @var SortOrder $sortOrder */
  56. $sortOrder = $sortOrderBuilder->setField('attribute_group_code')
  57. ->setDirection(SortOrder::SORT_ASC)
  58. ->create();
  59. $searchCriteriaBuilder->setSortOrders([$sortOrder]);
  60. $searchCriteriaBuilder->setPageSize(1);
  61. $searchCriteriaBuilder->setCurrentPage(1);
  62. $searchCriteria = $searchCriteriaBuilder->create();
  63. $searchResult = $this->repository->getList($searchCriteria);
  64. $this->assertEquals(2, $searchResult->getTotalCount());
  65. $items = array_values($searchResult->getItems());
  66. $this->assertEquals(1, count($items));
  67. $this->assertEquals('attribute_group_3_for_search', $items[0]['attribute_group_code']);
  68. }
  69. }