Ejemplo n.º 1
0
 /**
  * Creates a search criteria DTO based on the array of field filters.
  *
  * @return SearchCriteria
  */
 protected function getSearchCriteria()
 {
     foreach ($this->fieldFilters as $filter) {
         // array of fields, put filters in array to use 'or' group
         /** @var Filter[] $filterGroup */
         $filterGroup = [];
         if (!is_array($filter['field'])) {
             // just one field
             $filterGroup = [$this->createFilterData($filter['field'], $filter['condition'])];
         } else {
             foreach ($filter['field'] as $index => $field) {
                 $filterGroup[] = $this->createFilterData($field, $filter['condition'][$index]);
             }
         }
         $this->searchCriteriaBuilder->addFilter($filterGroup);
     }
     foreach ($this->_orders as $field => $direction) {
         /** @var \Magento\Framework\Api\SortOrder $sortOrder */
         /** @var string $direction */
         $direction = $direction == 'ASC' ? SearchCriteria::SORT_ASC : SearchCriteria::SORT_DESC;
         $sortOrder = $this->sortOrderBuilder->setField($field)->setDirection($direction)->create();
         $this->searchCriteriaBuilder->addSortOrder($sortOrder);
     }
     $this->searchCriteriaBuilder->setCurrentPage($this->_curPage);
     $this->searchCriteriaBuilder->setPageSize($this->_pageSize);
     return $this->searchCriteriaBuilder->create();
 }
Ejemplo n.º 2
0
 /**
  * @param string $field
  * @param string, $direction
  * @param string, $methodName
  * @param array $expectedResult
  *
  * @dataProvider sortOrderDataProvider
  */
 public function testGetListSortOrder($field, $direction, $methodName, $expectedResult)
 {
     /** @var \Magento\Framework\Api\SortOrder $sortOrder */
     /** @var string $direction */
     $direction = $direction == 'ASC' ? SearchCriteria::SORT_ASC : SearchCriteria::SORT_DESC;
     $sortOrder = $this->sortOrderBuilder->setField($field)->setDirection($direction)->create();
     $this->searchCriteriaBuilder->addSortOrder($sortOrder);
     $searchResults = $this->groupRepository->getList($this->searchCriteriaBuilder->create());
     /** @var \Magento\Customer\Api\Data\GroupInterface[] $resultItems */
     $resultItems = $searchResults->getItems();
     $this->assertTrue(count($resultItems) > 0);
     $result = [];
     foreach ($resultItems as $item) {
         /** @var \Magento\Customer\Model\Data\Group $item */
         $result[] = $item->{$methodName}();
     }
     $this->assertEquals($expectedResult, $result);
 }