Skip to content

Commit

Permalink
CRM-16842 add EntityBatch API fixed.
Browse files Browse the repository at this point in the history
----------------------------------------
* CRM-16842:
  https://issues.civicrm.org/jira/browse/CRM-16842
  • Loading branch information
saurabhbatra96 committed Oct 18, 2015
1 parent 8baa598 commit a646bdd
Show file tree
Hide file tree
Showing 6 changed files with 215 additions and 11 deletions.
35 changes: 35 additions & 0 deletions CRM/Batch/BAO/EntityBatch.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php
/*
+--------------------------------------------------------------------+
| CiviCRM version 4.6 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2015 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
| CiviCRM is free software; you can copy, modify, and distribute it |
| under the terms of the GNU Affero General Public License |
| Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
| |
| CiviCRM is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| See the GNU Affero General Public License for more details. |
| |
| You should have received a copy of the GNU Affero General Public |
| License and the CiviCRM Licensing Exception along |
| with this program; if not, contact CiviCRM LLC |
| at info[AT]civicrm[DOT]org. If you have questions about the |
| GNU Affero General Public License or the licensing of CiviCRM, |
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
+--------------------------------------------------------------------+
*/

/**
*
* @package CRM
* @copyright CiviCRM LLC (c) 2004-2015
*/
class CRM_Batch_BAO_EntityBatch extends CRM_Batch_DAO_EntityBatch {

}
81 changes: 81 additions & 0 deletions api/v3/EntityBatch.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<?php
/*
--------------------------------------------------------------------
| CiviCRM version 4.6 |
--------------------------------------------------------------------
| Copyright CiviCRM LLC (c) 2004-2015 |
--------------------------------------------------------------------
| This file is a part of CiviCRM. |
| |
| CiviCRM is free software; you can copy, modify, and distribute it |
| under the terms of the GNU Affero General Public License |
| Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
| |
| CiviCRM is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| See the GNU Affero General Public License for more details. |
| |
| You should have received a copy of the GNU Affero General Public |
| License and the CiviCRM Licensing Exception along |
| with this program; if not, contact CiviCRM LLC |
| at info[AT]civicrm[DOT]org. If you have questions about the |
| GNU Affero General Public License or the licensing of CiviCRM, |
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
--------------------------------------------------------------------
*/

/**
* This api exposes CiviCRM EntityBatch records.
*
* Use this api to add/remove entities from a batch.
* To create/update/delete the batches themselves, use the Batch api.
*
* @package CiviCRM_APIv3
*/

/**
* Get entity batches.
*
* @param array $params
*
* @return array
*/
function civicrm_api3_entity_batch_get($params) {
return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params);
}

/**
* Adjust Metadata for Create action.
*
* The metadata is used for setting defaults, documentation & validation.
*
* @param array $params
* Array of parameters determined by getfields.
*/
function _civicrm_api3_entity_batch_create_spec(&$params) {
$params['entity_id']['api.required'] = 1;
$params['batch_id']['api.required'] = 1;
}

/**
* Create an entity batch.
*
* @param array $params
*
* @return array
*/
function civicrm_api3_entity_batch_create($params) {
return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params);
}

/**
* Mark entity batch as removed.
*
* @param array $params
*
* @return array
*/
function civicrm_api3_entity_batch_delete($params) {
return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__), $params);
}
11 changes: 11 additions & 0 deletions tests/phpunit/CiviTest/CiviUnitTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -1543,6 +1543,17 @@ public function contributionPageCreate($params) {
return $contributionPage;
}

/**
* Create a sample batch.
*/
public function batchCreate() {
$params = $this->_params;
$params['name'] = $params['title'] = 'Batch_433397';
$params['status_id'] = 1;
$result = $this->callAPISuccess('batch', 'create', $params);
return $result['id'];
}

/**
* Create Tag.
*
Expand Down
11 changes: 0 additions & 11 deletions tests/phpunit/api/v3/BatchTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,17 +47,6 @@ protected function setUp() {
$this->useTransaction(TRUE);
}

/**
* Create a sample batch.
*/
public function batchCreate() {
$params = $this->_params;
$params['name'] = $params['title'] = 'Batch_433397';
$params['status_id'] = 1;
$result = $this->callAPISuccess('batch', 'create', $params);
return $result['id'];
}

/**
* Test civicrm_batch_get - success expected.
*/
Expand Down
84 changes: 84 additions & 0 deletions tests/phpunit/api/v3/EntityBatchTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<?php
/*
--------------------------------------------------------------------
| CiviCRM version 4.6 |
--------------------------------------------------------------------
| Copyright CiviCRM LLC (c) 2004-2015 |
--------------------------------------------------------------------
| This file is a part of CiviCRM. |
| |
| CiviCRM is free software; you can copy, modify, and distribute it |
| under the terms of the GNU Affero General Public License |
| Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
| |
| CiviCRM is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| See the GNU Affero General Public License for more details. |
| |
| You should have received a copy of the GNU Affero General Public |
| License and the CiviCRM Licensing Exception along |
| with this program; if not, contact CiviCRM LLC |
| at info[AT]civicrm[DOT]org. If you have questions about the |
| GNU Affero General Public License or the licensing of CiviCRM, |
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
--------------------------------------------------------------------
*/

require_once 'CiviTest/CiviUnitTestCase.php';


/**
* Test APIv3 civicrm_entity_batch_* functions
*
* @package CiviCRM_APIv3
*/
class api_v3_EntityBatchTest extends CiviUnitTestCase {

protected $_apiversion = 3;
protected $params;
protected $id;
protected $_entity;

public $DBResetRequired = FALSE;

public function setUp() {
parent::setUp();
$this->useTransaction(TRUE);

$entityParams = array('contact_id' => 1);

$this->_entity = 'EntityBatch';
$this->_entityID = $this->contributionCreate($entityParams);
$this->_batchID = $this->batchCreate();
$this->params = array(
'entity_id' => $this->_entityID,
'batch_id' => $this->_batchID,
'entity_table' => 'civicrm_financial_trxn',
);
}

public function testCreateEntityBatch() {
$result = $this->callAPIAndDocument($this->_entity, 'create', $this->params, __FUNCTION__, __FILE__);
$this->assertEquals(1, $result['count']);
$this->getAndCheck($this->params, $result['id'], $this->_entity);
$this->assertNotNull($result['values'][$result['id']]['id']);
}

public function testGetEntityBatch() {
$result = $this->callAPISuccess($this->_entity, 'create', $this->params);
$result = $this->callAPIAndDocument($this->_entity, 'get', $this->params, __FUNCTION__, __FILE__);
$this->assertEquals(1, $result['count']);
$this->assertNotNull($result['values'][$result['id']]['id']);
$this->callAPISuccess($this->_entity, 'delete', array('id' => $result['id']));
}

public function testDeleteEntityBatch() {
$result = $this->callAPISuccess($this->_entity, 'create', $this->params);
$deleteParams = array('id' => $result['id']);
$result = $this->callAPIAndDocument($this->_entity, 'delete', $deleteParams, __FUNCTION__, __FILE__);
$checkDeleted = $this->callAPISuccess($this->_entity, 'get', array());
$this->assertEquals(0, $checkDeleted['count']);
}

}
4 changes: 4 additions & 0 deletions xml/schema/Batch/EntityBatch.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<comment>Batch entities (Contributions, Participants, Contacts) to a batch.</comment>
<field>
<name>id</name>
<title>EntityBatch ID</title>

This comment has been minimized.

Copy link
@saurabhbatra96

saurabhbatra96 Oct 18, 2015

Author Contributor

@eileenmcnaughton It seems that even after adding the titles for all the fields in EntityBatch.xml the SyntaxConformanceTest still gives an error.

"1) api_v3_SyntaxConformanceTest::testGetfieldsHasTitle with data set #31 ('EntityBatch')
no title for EntityBatch - id on action create
Failed asserting that an array has the key 'title'.
2) api_v3_SyntaxConformanceTest::testGetfieldsHasTitle with data set #72 ('Navigation')
no title for Navigation - id on action create
Failed asserting that an array has the key 'title'."

<type>int unsigned</type>
<required>true</required>
<comment>primary key</comment>
Expand All @@ -18,13 +19,15 @@
</primaryKey>
<field>
<name>entity_table</name>
<title>EntityBatch Table</title>
<type>varchar</type>
<length>64</length>
<comment>physical tablename for entity being joined to file, e.g. civicrm_contact</comment>
<add>3.3</add>
</field>
<field>
<name>entity_id</name>
<title>Entity ID</title>
<type>int unsigned</type>
<required>true</required>
<comment>FK to entity table specified in entity_table column.</comment>
Expand All @@ -43,6 +46,7 @@
</index>
<field>
<name>batch_id</name>
<title>Batch ID</title>
<type>int unsigned</type>
<required>true</required>
<comment>FK to civicrm_batch</comment>
Expand Down

2 comments on commit a646bdd

@eileenmcnaughton
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah right - when you run them locally it does.

The title comes from the class CRM_Batch_DAO_EntityBatch

This file is a generated file. To regenerate it try moving into the xml directory & then doing

php Gencode.php

After that your titles should show in the above file.

@saurabhbatra96
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I'll submit the PR and let Jenkins test this for me. Should probably pass!

Please sign in to comment.