Clarify function signature
authorEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 24 Jan 2023 22:24:52 +0000 (11:24 +1300)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Wed, 25 Jan 2023 02:11:08 +0000 (15:11 +1300)
It was doing both pass-by-ref and return to give back the value - this
settles on using return.

Civi/Test/Api4TestTrait.php
tests/phpunit/api/v4/Entity/DomainTest.php

index eaded65524f3ba2a7a9ed6e98b16fe518e0a98b5..fa88143042e10cc36d354e918921d16febf6f4fc 100644 (file)
@@ -48,14 +48,12 @@ trait Api4TestTrait {
       'defaults' => [],
     ];
     $idField = CoreUtil::getIdFieldName($entityName);
-    foreach ($saveParams['records'] as &$record) {
-      $record += $saveParams['defaults'];
+    foreach ($saveParams['records'] as $index => $record) {
+      $saveParams['records'][$index] += $saveParams['defaults'];
       if (empty($record[$idField])) {
-        $this->getRequiredValuesToCreate($entityName, $record);
+        $saveParams['records'][$index] = $this->getRequiredValuesToCreate($entityName, $saveParams['records'][$index]);
       }
     }
-    // Unset for clarity as it leaks from the foreach & is a reference.
-    unset($record);
     $saved = civicrm_api4($entityName, 'save', $saveParams);
     foreach ($saved as $item) {
       $this->testRecords[] = [$entityName, [[$idField, '=', $item[$idField]]]];
@@ -81,7 +79,7 @@ trait Api4TestTrait {
    * @return array
    * @throws \CRM_Core_Exception
    */
-  public function getRequiredValuesToCreate(string $entity, array &$values = []): array {
+  public function getRequiredValuesToCreate(string $entity, array $values = []): array {
     $requiredFields = civicrm_api4($entity, 'getfields', [
       'action' => 'create',
       'loadOptions' => TRUE,
index 951209184e41d179dfd9ef92e32c6a20ab9044ca..40c919910b8ac4548ffec55a0870d8825bcdaf71 100644 (file)
@@ -28,7 +28,12 @@ use Civi\Test\TransactionalInterface;
  */
 class DomainTest extends Api4TestBase implements TransactionalInterface {
 
-  public function testActiveDomain() {
+  /**
+   * Test active domain and domain_id.name parameters.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function testActiveDomain(): void {
     Domain::create(FALSE)
       ->addValue('name', 'Not current')
       ->addValue('version', \CRM_Utils_System::version())