/**
  * @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);
 }
Ejemplo n.º 2
0
 /**
  * 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);
     }
 }