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); }
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); }
/** * {@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; }