From e4da3f7e8f0658fd3132d08205274f527d656755 Mon Sep 17 00:00:00 2001 From: colemanw Date: Thu, 3 Aug 2023 22:38:53 -0400 Subject: [PATCH] APIv4 ConformanceTest - Be smarter about conditionally-required fields Before: fields with 'required_if' were blindly treated as 'required' After: 'required_if' condition is evaluated --- Civi/Test/Api4TestTrait.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Civi/Test/Api4TestTrait.php b/Civi/Test/Api4TestTrait.php index 88d52ce210..0bfe6bc9d1 100644 --- a/Civi/Test/Api4TestTrait.php +++ b/Civi/Test/Api4TestTrait.php @@ -2,6 +2,7 @@ namespace Civi\Test; +use Civi\Api4\Generic\AbstractAction; use Civi\Api4\Generic\Result; use Civi\Api4\Service\Spec\Provider\FinancialItemCreationSpecProvider; use Civi\Api4\Utils\CoreUtil; @@ -123,12 +124,16 @@ trait Api4TestTrait { ['default_value', 'IS EMPTY'], ['readonly', 'IS EMPTY'], ], + 'orderBy' => ['required' => 'DESC'], ], 'name'); $extraValues = []; - foreach ($requiredFields as $fieldName => $requiredField) { - if (!isset($values[$fieldName])) { - $extraValues[$fieldName] = $this->getRequiredValue($requiredField); + foreach ($requiredFields as $fieldName => $field) { + if ( + !isset($values[$fieldName]) && + ($field['required'] || AbstractAction::evaluateCondition($field['required_if'], $values + $extraValues)) + ) { + $extraValues[$fieldName] = $this->getRequiredValue($field); } } -- 2.25.1