function let(ConstraintFactoryInterface $constraintFactory, FeatureValidatorInterface $boolConstraint, FeatureInterface $boolFeature)
 {
     $this->beConstructedWith($constraintFactory);
     $constraintFactory->getConstraint('bool')->willReturn($boolConstraint);
     $boolConstraint->validate(Argument::any(), Argument::any(), Argument::any())->willReturn(true);
     $boolFeature->getType()->willReturn('bool');
     $boolFeature->getValidationRules()->willReturn(null);
 }
Пример #2
0
 function let(FeatureInterface $ltNumericFeature, FeatureInterface $lteNumericFeature, FeatureInterface $gtNumericFeature, FeatureInterface $gteNumericFeature, FeatureInterface $eqNumericFeature, FeatureInterface $neqNumericFeature, FeatureInterface $waNumericFeature)
 {
     $ltNumericFeature->getType()->willReturn('numeric');
     $ltNumericFeature->getValidationRules()->willReturn(json_encode(array('lt')));
     $lteNumericFeature->getType()->willReturn('numeric');
     $lteNumericFeature->getValidationRules()->willReturn(json_encode(array('lte')));
     $gtNumericFeature->getType()->willReturn('numeric');
     $gtNumericFeature->getValidationRules()->willReturn(json_encode(array('gt')));
     $gteNumericFeature->getType()->willReturn('numeric');
     $gteNumericFeature->getValidationRules()->willReturn(json_encode(array('gte')));
     $eqNumericFeature->getType()->willReturn('numeric');
     $eqNumericFeature->getValidationRules()->willReturn(json_encode(array('eq')));
     $neqNumericFeature->getType()->willReturn('numeric');
     $neqNumericFeature->getValidationRules()->willReturn(json_encode(array('neq')));
     $waNumericFeature->getType()->willReturn('numeric');
     $waNumericFeature->getValidationRules()->willReturn(null);
 }
Пример #3
0
 /**
  * {@inheritDoc}
  */
 public function validate(FeatureInterface $feature, $featureValue, $validatedValue)
 {
     if (!is_numeric($featureValue)) {
         throw new InvalidArgumentException('The value of feature should be numeric(is_numeric).');
     }
     if (!is_numeric($validatedValue)) {
         throw new InvalidArgumentException('The validated value should be numeric(is_numeric).');
     }
     $rules = $this->parseValidationRules($feature->getValidationRules());
     if (empty($rules)) {
         return true;
     }
     $isValid = true;
     foreach ($rules as $rule) {
         switch ($rule) {
             case 'lt':
                 $isValid = $validatedValue < $featureValue;
                 break;
             case 'lte':
                 $isValid = $validatedValue <= $featureValue;
                 break;
             case 'gt':
                 $isValid = $validatedValue > $featureValue;
                 break;
             case 'gte':
                 $isValid = $validatedValue >= $featureValue;
                 break;
             case 'eq':
                 $isValid = $validatedValue == $featureValue;
                 break;
             case 'neq':
                 $isValid = $validatedValue != $featureValue;
                 break;
         }
         if (!$isValid) {
             break;
         }
     }
     return $isValid;
 }