Skip to content

Commit f1bbb0e

Browse files
authored
Merge pull request #39 from TheDMSGroup/ENG-190-exception
[ENG-190] Prevent exception when multiple validations fail.
2 parents 0ca5a07 + 3f49984 commit f1bbb0e

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

Helper/FilterHelper.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,10 @@ protected function evaluate($rule, array $context = [])
182182

183183
$result = $this->evaluateRuleAgainstContext($rule, $contextValue, $ruleValue);
184184
if (!$result) {
185-
$val = $contextValue ? '"'.$contextValue.'"' : 'empty';
185+
$contextValue = $contextValue ? '"'.$contextValue.'"' : 'empty';
186+
$ruleValue = $ruleValue ? '"'.$ruleValue.'"' : 'empty';
186187
$this->setError(
187-
'Validation rule: '.$rule->field.' '.$rule->operator.' '.$ruleValue.' (actual value was '.$val.')'
188+
$rule->field.' must '.rtrim($rule->operator, 's').' '.$ruleValue.' (value was '.$contextValue.').'
188189
);
189190
}
190191

Model/ApiPayloadResponse.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -369,17 +369,25 @@ public function validate()
369369
}
370370

371371
// Standard success definition validation.
372-
$e = false;
373372
$filter = new FilterHelper();
374373
try {
375374
$this->valid = $filter->filter($this->successDefinition, $this->responseActual);
376375
} catch (\Exception $e) {
376+
throw new ContactClientException(
377+
'Error in validation: '.$e->getMessage(),
378+
0,
379+
$e,
380+
Stat::TYPE_REJECT,
381+
false,
382+
null,
383+
$filter->getErrors()
384+
);
377385
}
378-
if (!$this->valid || $e) {
386+
if (!$this->valid && !isset($e)) {
379387
throw new ContactClientException(
380-
'Response did not pass validation.'.$e ? ' '.$e->getMessage() : null,
388+
'Failed validation: '.implode(', ', $filter->getErrors()),
381389
0,
382-
$e ? $e : null,
390+
null,
383391
Stat::TYPE_REJECT,
384392
false,
385393
null,

0 commit comments

Comments
 (0)