public function it_evaluates_the_rule_based_on_subject_to_false_when_exception_is_thrown(RuleInterface $rule, RuleSubjectInterface $subject, LoggerInterface $logger, ExpressionLanguage $expression) { $rule->getExpression()->shouldBeCalled(); $subject->getSubjectType()->shouldBeCalled(); $expression->evaluate(Argument::type('string'), Argument::type('array'))->willReturn(false); $logger->error(Argument::type('string'))->shouldBeCalled(); $this->evaluate($rule, $subject)->shouldReturn(false); }
/** * {@inheritdoc} */ public function evaluate(RuleInterface $rule, RuleSubjectInterface $subject) { try { return (bool) $this->expression->evaluate($rule->getExpression(), [$subject->getSubjectType() => $subject]); } catch (\Exception $e) { $this->logger->error(sprintf('%s Trace: %s', $e->getMessage(), $e->getTraceAsString())); } return false; }
/** * {@inheritdoc} */ public function isSupported(RuleSubjectInterface $subject) { return $subject instanceof ArticleInterface && 'article' === $subject->getSubjectType(); }