/** * @param $filterModifier * @param $filterName * @param $conditionType * @param $value * @return void * @dataProvider getApplyFilterModifierDataProvider */ public function testApplyFilterModifierWith($filterModifier, $filterName, $conditionType, $value) { $filter = $this->getMock('Magento\\Framework\\Api\\Filter'); $this->request->expects($this->once())->method('getParam')->with(\Magento\Ui\Component\Filters\FilterModifier::FILTER_MODIFIER)->willReturn($filterModifier); $this->filterBuilder->expects($this->once())->method('setConditionType')->with($conditionType)->willReturnSelf(); $this->filterBuilder->expects($this->once())->method('setField')->with($filterName)->willReturnSelf(); $this->filterBuilder->expects($this->once())->method('setValue')->with($value)->willReturnSelf(); $this->filterBuilder->expects($this->once())->method('create')->with()->willReturn($filter); $this->dataProvider->expects($this->once())->method('addFilter')->with($filter); $this->unit->applyFilterModifier($this->dataProvider, $filterName); }
/** * Apply modifiers for filters * * @param DataProviderInterface $dataProvider * @param string $filterName * @return void * @throws \Magento\Framework\Exception\LocalizedException */ public function applyFilterModifier(DataProviderInterface $dataProvider, $filterName) { $filterModifier = $this->request->getParam(self::FILTER_MODIFIER); if (isset($filterModifier[$filterName]['condition_type'])) { $conditionType = $filterModifier[$filterName]['condition_type']; if (!in_array($conditionType, $this->allowedConditionTypes)) { throw new \Magento\Framework\Exception\LocalizedException(__('Condition type "%1" is not allowed', $conditionType)); } $value = isset($filterModifier[$filterName]['value']) ? $filterModifier[$filterName]['value'] : null; $filter = $this->filterBuilder->setConditionType($conditionType)->setField($filterName)->setValue($value)->create(); $dataProvider->addFilter($filter); } }