APIv4 - Add unit test to ensure is_active field consitency
authorcolemanw <coleman@civicrm.org>
Wed, 18 Oct 2023 14:11:45 +0000 (10:11 -0400)
committercolemanw <coleman@civicrm.org>
Wed, 18 Oct 2023 18:23:15 +0000 (14:23 -0400)
tests/phpunit/api/v4/Entity/ConformanceTest.php
tests/phpunit/api/v4/Spec/SpecGathererTest.php

index ee9f0a8d185b07083756258028e7b117fdb0c40d..7c656b61f6bc794b2cf235ceda9c1b4ac54a442c 100644 (file)
@@ -182,6 +182,7 @@ class ConformanceTest extends Api4TestBase implements HookInterface {
   protected function checkFields($entityName) {
     $fields = civicrm_api4($entityName, 'getFields', [
       'checkPermissions' => FALSE,
+      'action' => 'create',
       'where' => [['type', '=', 'Field']],
     ])->indexBy('name');
 
@@ -193,6 +194,12 @@ class ConformanceTest extends Api4TestBase implements HookInterface {
     // Hmm, not true of every primary key... what about Afform.name?
     $this->assertEquals('Integer', $fields[$idField]['data_type']);
 
+    // The underlying schema is not 100% consistent, but this is the standard in APIv4
+    if (isset($fields['is_active'])) {
+      $this->assertTrue($fields['is_active']['default_value']);
+      $this->assertFalse($fields['is_active']['required']);
+    }
+
     // Ensure that the getFields (FieldSpec) format is generally consistent.
     foreach ($fields as $field) {
       $isNotNull = function($v) {
index f879af8c18c0d013fccae095fea1483c678bd965..04de1c46a4f59a4f1886ebfb77d95999e6277687 100644 (file)
@@ -65,11 +65,4 @@ class SpecGathererTest extends Api4TestBase {
     $this->assertContains('foo', $fieldNames);
   }
 
-  public function testIsActiveFieldCanDefaultToFalse(): void {
-    $gatherer = new SpecGatherer();
-    // Use Dashboard as it has is_active field and that defaults to 0 (according to schema)
-    $specs = $gatherer->getSpec('Dashboard', 'create', FALSE);
-    self::assertFalse($specs->getFieldByName('is_active')->getDefaultValue(), 'Default value for "is_active" field is not false');
-  }
-
 }