Add v4 batch api
authoreileen <emcnaughton@wikimedia.org>
Sun, 28 Mar 2021 23:42:43 +0000 (12:42 +1300)
committereileen <emcnaughton@wikimedia.org>
Mon, 29 Mar 2021 06:07:50 +0000 (19:07 +1300)
CRM/Batch/BAO/Batch.php
Civi/Api4/Batch.php [new file with mode: 0644]
tests/phpunit/api/v3/BatchTest.php

index 0c061a16ab096fbcbffdbac5eaf1a75d085f6fe6..c2cba49cda1d5555cc5fbdcd5c33aa719a9a8903 100644 (file)
@@ -40,10 +40,11 @@ class CRM_Batch_BAO_Batch extends CRM_Batch_DAO_Batch {
    *
    * @return object
    *   $batch batch object
+   * @throws \Exception
    */
   public static function create(&$params) {
     if (empty($params['id']) && empty($params['name'])) {
-      $params['name'] = CRM_Utils_String::titleToVar($params['title']);
+      $params['name'] = CRM_Utils_String::titleToVar($params['title'] ?? 'batch_ref_' . random_int(0, 100000));
     }
     return self::writeRecord($params);
   }
diff --git a/Civi/Api4/Batch.php b/Civi/Api4/Batch.php
new file mode 100644 (file)
index 0000000..8a75875
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Batch entity.
+ *
+ * @see https://docs.civicrm.org/user/en/latest/pledges/everyday-tasks/#batch-entry-of-pledges
+ * @package Civi\Api4
+ */
+class Batch extends Generic\DAOEntity {
+
+}
index 457abcd2d6de22abafccd850d9f1aa1cb957608e..c59d02055c440eeb3b17c0bcf17b422558bd54bd 100644 (file)
@@ -17,7 +17,6 @@
  */
 class api_v3_BatchTest extends CiviUnitTestCase {
 
-  protected $_params = [];
   protected $_entity = 'batch';
 
   /**
@@ -27,24 +26,36 @@ class api_v3_BatchTest extends CiviUnitTestCase {
    */
   protected function setUp(): void {
     parent::setUp();
-    $this->useTransaction(TRUE);
+    $this->useTransaction();
   }
 
   /**
    * Test civicrm_batch_get - success expected.
+   *
+   * @dataProvider versionThreeAndFour
+   *
+   * @param int $version
    */
-  public function testGet() {
+  public function testGet(int $version): void {
+    $this->_apiversion = $version;
     $params = [
       'id' => $this->batchCreate(),
     ];
-    $result = $this->callAPIAndDocument('batch', 'get', $params, __FUNCTION__, __FILE__);
+    $result = $this->callAPIAndDocument('Batch', 'get', $params, __FUNCTION__, __FILE__);
     $this->assertEquals($params['id'], $result['id']);
   }
 
   /**
    * Test civicrm_batch_create - success expected.
+   *
+   * @dataProvider versionThreeAndFour
+   *
+   * @param int $version
+   *
+   * @throws \CRM_Core_Exception
    */
-  public function testCreate() {
+  public function testCreate(int $version): void {
+    $this->_apiversion = $version;
     $params = [
       'name' => 'New_Batch_03',
       'title' => 'New Batch 03',
@@ -56,13 +67,20 @@ class api_v3_BatchTest extends CiviUnitTestCase {
 
     $result = $this->callAPIAndDocument('batch', 'create', $params, __FUNCTION__, __FILE__);
     $this->assertNotNull($result['id']);
-    $this->getAndCheck($params, $result['id'], $this->_entity);
+    $this->getAndCheck($params, $result['id'], 'Batch');
   }
 
   /**
    * Test civicrm_batch_create with id.
+   *
+   * @dataProvider versionThreeAndFour
+   *
+   * @param int $version
+   *
+   * @throws \CRM_Core_Exception
    */
-  public function testUpdate() {
+  public function testUpdate(int $version): void {
+    $this->_apiversion = $version;
     $params = [
       'name' => 'New_Batch_04',
       'title' => 'New Batch 04',
@@ -79,24 +97,31 @@ class api_v3_BatchTest extends CiviUnitTestCase {
 
   /**
    * Test civicrm_batch_delete using the old $params['batch_id'] syntax.
+   *
+   * @throws \CRM_Core_Exception
    */
-  public function testBatchDeleteOldSyntax() {
+  public function testBatchDeleteOldSyntax(): void {
     $batchID = $this->batchCreate();
     $params = [
       'batch_id' => $batchID,
     ];
-    $result = $this->callAPISuccess('batch', 'delete', $params);
+    $this->callAPISuccess('Batch', 'delete', $params);
   }
 
   /**
    * Test civicrm_batch_delete using the new $params['id'] syntax.
+   *
+   * @dataProvider versionThreeAndFour
+   *
+   * @param int $version
    */
-  public function testBatchDeleteCorrectSyntax() {
+  public function testBatchDeleteCorrectSyntax(int $version): void {
+    $this->_apiversion = $version;
     $batchID = $this->batchCreate();
     $params = [
       'id' => $batchID,
     ];
-    $result = $this->callAPIAndDocument('batch', 'delete', $params, __FUNCTION__, __FILE__);
+    $this->callAPIAndDocument('Batch', 'delete', $params, __FUNCTION__, __FILE__);
   }
 
 }