From 6e8149833d80edc2f1b30f5f7542b69bf6256d82 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Tue, 25 May 2021 08:09:49 -0400 Subject: [PATCH] APIv4 - Fix Case conformance test Now that creator_id has a default value it can also be marked as required. Updating TestCreationParameterProvider to supply a FK before the default value fixes the problem with user_contact_id in a test with no logged-in user. --- .../Service/Spec/Provider/CaseCreationSpecProvider.php | 1 + .../api/v4/Service/TestCreationParameterProvider.php | 10 +++------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php index cad9a860dc..73b828cdf2 100644 --- a/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php +++ b/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php @@ -33,6 +33,7 @@ class CaseCreationSpecProvider implements Generic\SpecProviderInterface { $creator->setDescription('Contact who created the case.'); $creator->setFkEntity('Contact'); $creator->setInputType('EntityRef'); + $creator->setRequired(TRUE); $creator->setDefaultValue('user_contact_id'); $spec->addFieldSpec($creator); diff --git a/tests/phpunit/api/v4/Service/TestCreationParameterProvider.php b/tests/phpunit/api/v4/Service/TestCreationParameterProvider.php index 2ab8361942..632945ed49 100644 --- a/tests/phpunit/api/v4/Service/TestCreationParameterProvider.php +++ b/tests/phpunit/api/v4/Service/TestCreationParameterProvider.php @@ -45,10 +45,6 @@ class TestCreationParameterProvider { $createSpec = $this->gatherer->getSpec($entity, 'create', FALSE); $requiredFields = array_merge($createSpec->getRequiredFields(), $createSpec->getConditionalRequiredFields()); - if ($entity === 'Case') { - $requiredFields[] = $createSpec->getFieldByName('creator_id'); - } - $requiredParams = []; foreach ($requiredFields as $requiredField) { $value = $this->getRequiredValue($requiredField); @@ -80,12 +76,12 @@ class TestCreationParameterProvider { if ($field->getOptions()) { return $this->getOption($field); } - elseif ($field->getDefaultValue()) { - return $field->getDefaultValue(); - } elseif ($field->getFkEntity()) { return $this->getFkID($field, $field->getFkEntity()); } + elseif ($field->getDefaultValue()) { + return $field->getDefaultValue(); + } elseif (in_array($field->getName(), ['entity_id', 'contact_id'])) { return $this->getFkID($field, 'Contact'); } -- 2.25.1