api_v3_SyntaxConformanceTest - Fix loading of SYNTAX_CONFORMANCE_ENTITIES
authorTim Otten <totten@civicrm.org>
Fri, 14 Nov 2014 03:43:37 +0000 (19:43 -0800)
committerTim Otten <totten@civicrm.org>
Fri, 14 Nov 2014 04:47:32 +0000 (20:47 -0800)
tests/phpunit/api/v3/SyntaxConformanceTest.php

index 0b9cb64b4b0a6fbdead0677f222233a937f7ffaa..88949e9ca50ca65bae31be65e761f853ffa8a298 100644 (file)
@@ -29,10 +29,15 @@ require_once 'CiviTest/CiviUnitTestCase.php';
 
 
 /**
- *  Test APIv3 civicrm_sytanc conformance* functions
+ * Test that the core actions for APIv3 entities comply with standard syntax+behavior.
  *
- *  @package CiviCRM_APIv3
- *  @subpackage API_Core
+ * By default, this tests all API entities. To only test specific entities, call phpunit with
+ * environment variable SYNTAX_CONFORMANCE_ENTITIES, e.g.
+ *
+ * env SYNTAX_CONFORMANCE_ENTITIES="Contact Event" ./scripts/phpunit api_v3_SyntaxConformanceTest
+ *
+ * @package CiviCRM_APIv3
+ * @subpackage API_Core
  */
 
 class api_v3_SyntaxConformanceTest extends CiviUnitTestCase {
@@ -99,19 +104,18 @@ class api_v3_SyntaxConformanceTest extends CiviUnitTestCase {
    * @return array
    */
   public static function entities($skip = NULL) {
-    // To only test specific entities, call phpunit with SYNTAX_CONFORMANCE_ENTITIES="TheEntityName"
-    // or uncomment this line:
-    //return array(array ('Tag'), array ('Activity')  );
+    // The order of operations in here is screwy. In the case where SYNTAX_CONFORMANCE_ENTITIES is
+    // defined, we should be able to parse+return it immediately. However, some weird dependency
+    // crept into the system where civicrm_api('Entity','get') must be called as part of entities()
+    // (even if its return value is ignored).
 
+    $tmp = civicrm_api('Entity', 'Get', array('version' => 3));
     if (getenv('SYNTAX_CONFORMANCE_ENTITIES')) {
-      $result = array();
-      foreach (explode(' ', getenv('SYNTAX_CONFORMANCE_ENTITIES')) as $entity) {
-        $result[] = array($entity);
-      }
-      return $result;
+      $tmp = array(
+        'values' => explode(' ', getenv('SYNTAX_CONFORMANCE_ENTITIES'))
+      );
     }
 
-    $tmp = civicrm_api('Entity', 'Get', array('version' => 3));
     if (!is_array($skip)) {
       $skip = array();
     }