/** * Find order addresses by criteria. * * @param \Magento\Framework\Api\SearchCriteria $criteria * @return \Magento\Sales\Api\Data\OrderAddressInterface[] */ public function getList(\Magento\Framework\Api\SearchCriteria $criteria) { //@TODO: fix search logic /** @var \Magento\Sales\Api\Data\OrderAddressSearchResultInterface $searchResult */ $searchResult = $this->searchResultFactory->create(); foreach ($criteria->getFilterGroups() as $filterGroup) { foreach ($filterGroup->getFilters() as $filter) { $condition = $filter->getConditionType() ? $filter->getConditionType() : 'eq'; $searchResult->addFieldToFilter($filter->getField(), [$condition => $filter->getValue()]); } } $searchResult->setCurPage($criteria->getCurrentPage()); $searchResult->setPageSize($criteria->getPageSize()); return $searchResult; }
public function testGetList() { $filter = $this->getMock('Magento\\Framework\\Api\\Filter', ['getConditionType', 'getField', 'getValue'], [], '', false); $filter->expects($this->any())->method('getConditionType')->willReturn(false); $filter->expects($this->any())->method('getField')->willReturn('test_field'); $filter->expects($this->any())->method('getValue')->willReturn('test_value'); $filterGroup = $this->getMock('Magento\\Framework\\Api\\Search\\FilterGroup', ['getFilters'], [], '', false); $filterGroup->expects($this->once())->method('getFilters')->willReturn([$filter]); $searchCriteria = $this->getMock('Magento\\Framework\\Api\\SearchCriteria', ['getFilterGroups'], [], '', false); $searchCriteria->expects($this->once())->method('getFilterGroups')->willReturn([$filterGroup]); $collection = $this->getMock('Magento\\Sales\\Model\\ResourceModel\\Order\\Address\\Collection', ['addFieldToFilter'], [], '', false); $collection->expects($this->once())->method('addFieldToFilter')->withAnyParameters(); $this->searchResultFactory->expects($this->once())->method('create')->willReturn($collection); $this->assertEquals($collection, $this->subject->getList($searchCriteria)); }