From 524cefae2694d922c18c05e65e52b28c1fb3913c Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Mon, 28 Jun 2021 16:57:45 -0700 Subject: [PATCH] (REF) ConformanceTest - Ensure that field-specs are consistent when converting to/from array --- tests/phpunit/api/v4/Entity/ConformanceTest.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/phpunit/api/v4/Entity/ConformanceTest.php b/tests/phpunit/api/v4/Entity/ConformanceTest.php index c03933de96..2bf2386f5c 100644 --- a/tests/phpunit/api/v4/Entity/ConformanceTest.php +++ b/tests/phpunit/api/v4/Entity/ConformanceTest.php @@ -23,6 +23,8 @@ use Civi\API\Exception\UnauthorizedException; use Civi\Api4\Entity; use api\v4\UnitTestCase; use Civi\Api4\Event\ValidateValuesEvent; +use Civi\Api4\Service\Spec\CustomFieldSpec; +use Civi\Api4\Service\Spec\FieldSpec; use Civi\Api4\Utils\CoreUtil; use Civi\Test\HookInterface; @@ -193,6 +195,19 @@ class ConformanceTest extends UnitTestCase implements HookInterface { $this->assertArrayHasKey('data_type', $fields['id'], $errMsg); $this->assertEquals('Integer', $fields['id']['data_type']); + + // Ensure that the getFields (FieldSpec) format is generally consistent. + foreach ($fields as $field) { + $isNotNull = function($v) { + return $v !== NULL; + }; + $class = empty($field['custom_field_id']) ? FieldSpec::class : CustomFieldSpec::class; + $spec = (new $class($field['name'], $field['entity']))->loadArray($field, TRUE); + $this->assertEquals( + array_filter($field, $isNotNull), + array_filter($spec->toArray(), $isNotNull) + ); + } } /** -- 2.25.1