75 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
namespace Magento\Eav\Model;
 | 
						|
 | 
						|
use Magento\Eav\Api\AttributeRepositoryInterface;
 | 
						|
use Magento\Framework\Api\FilterBuilder;
 | 
						|
use Magento\Framework\Api\SearchCriteriaBuilder;
 | 
						|
use Magento\Framework\Api\SortOrder;
 | 
						|
use Magento\Framework\Api\SortOrderBuilder;
 | 
						|
use Magento\TestFramework\Helper\Bootstrap;
 | 
						|
 | 
						|
class AttributeRepositoryTest extends \PHPUnit\Framework\TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var AttributeRepositoryInterface
 | 
						|
     */
 | 
						|
    private $repository;
 | 
						|
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $this->repository = Bootstrap::getObjectManager()->create(AttributeRepositoryInterface::class);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @magentoDataFixture Magento/Eav/_files/attribute_for_search.php
 | 
						|
     */
 | 
						|
    public function testGetList()
 | 
						|
    {
 | 
						|
        /** @var FilterBuilder $filterBuilder */
 | 
						|
        $filterBuilder = Bootstrap::getObjectManager()->create(FilterBuilder::class);
 | 
						|
 | 
						|
        $filter1 = $filterBuilder->setField('backend_type')
 | 
						|
            ->setValue('varchar')
 | 
						|
            ->create();
 | 
						|
        $filter2 = $filterBuilder->setField('is_user_defined')
 | 
						|
            ->setValue(true)
 | 
						|
            ->create();
 | 
						|
        $filter3 = $filterBuilder->setField('is_required')
 | 
						|
            ->setValue(true)
 | 
						|
            ->create();
 | 
						|
 | 
						|
        /** @var SearchCriteriaBuilder $searchCriteriaBuilder */
 | 
						|
        $searchCriteriaBuilder = Bootstrap::getObjectManager()->create(SearchCriteriaBuilder::class);
 | 
						|
 | 
						|
        $searchCriteriaBuilder->addFilters([$filter1, $filter2]);
 | 
						|
        $searchCriteriaBuilder->addFilters([$filter3]);
 | 
						|
 | 
						|
        /** @var SortOrderBuilder $sortOrderBuilder */
 | 
						|
        $sortOrderBuilder = Bootstrap::getObjectManager()->create(SortOrderBuilder::class);
 | 
						|
 | 
						|
        /** @var SortOrder $sortOrder */
 | 
						|
        $sortOrder = $sortOrderBuilder->setField('attribute_code')
 | 
						|
            ->setDirection(SortOrder::SORT_ASC)
 | 
						|
            ->create();
 | 
						|
 | 
						|
        $searchCriteriaBuilder->setSortOrders([$sortOrder]);
 | 
						|
 | 
						|
        $searchCriteriaBuilder->setPageSize(2);
 | 
						|
        $searchCriteriaBuilder->setCurrentPage(2);
 | 
						|
 | 
						|
        $searchCriteria = $searchCriteriaBuilder->create();
 | 
						|
 | 
						|
        $searchResult = $this->repository->getList('test', $searchCriteria);
 | 
						|
 | 
						|
        $this->assertEquals(3, $searchResult->getTotalCount());
 | 
						|
 | 
						|
        $items = array_values($searchResult->getItems());
 | 
						|
        $this->assertCount(1, $items);
 | 
						|
        $this->assertEquals('attribute_for_search_3', $items[0]['attribute_code']);
 | 
						|
    }
 | 
						|
}
 |