CRM-13072 upgrade Paritipant Payment test classes to pass
[civicrm-core.git] / tests / phpunit / api / v3 / ContributionTest.php
index f29c9e698cc14adf23aac1892a77f4af0e639a14..f69f043ea5ff96cfe8e921c46d368db8c3687e6c 100644 (file)
@@ -43,7 +43,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
    */
   protected $_individualId;
   protected $_contribution;
-  protected $_contributionTypeId = 1;
+  protected $_financialTypeId = 1;
   protected $_apiversion;
   protected $_entity = 'Contribution';
   public $debug = 0;
@@ -59,13 +59,12 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contact_id' => $this->_individualId,
       'receive_date' => '20120511',
       'total_amount' => 100.00,
-      'financial_type_id'   => $this->_contributionTypeId,
+      'financial_type_id'   => $this->_financialTypeId,
       'non_deductible_amount' => 10.00,
       'fee_amount' => 5.00,
       'net_amount' => 95.00,
       'source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
     );
     $this->_processorParams = array(
       'domain_id' => 1,
@@ -79,7 +78,6 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'billing_mode' => 1,
     );
     $this->_pageParams = array(
-      'version' => 3,
       'title' => 'Test Contribution Page',
       'financial_type_id' => 1,
       'currency' => 'USD',
@@ -93,8 +91,6 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
   }
 
   function tearDown() {
-
-    $this->contributionTypeDelete();
     $this->quickCleanup(array(
       'civicrm_contribution',
       'civicrm_contribution_soft',
@@ -110,20 +106,12 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     ));
   }
 
-  ///////////////// civicrm_contribution_get methods
-
-  function testGetParamsNotArrayContribution() {
-    $params = 'contact_id= 1';
-    $contribution = $this->callAPIFailure('contribution', 'get', $params);
-    $this->assertEquals($contribution['error_message'], 'Input variable `params` is not an array');
-  }
-
   function testGetContribution() {
     $p = array(
       'contact_id' => $this->_individualId,
       'receive_date' => '2010-01-20',
       'total_amount' => 100.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'non_deductible_amount' => 10.00,
       'fee_amount' => 5.00,
       'net_amount' => 95.00,
@@ -131,16 +119,14 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 78910,
       'source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
     );
     $this->_contribution = $this->callAPISuccess('contribution', 'create', $p);
 
     $params = array(
       'contribution_id' => $this->_contribution['id'],
-      'version' => $this->_apiversion,
     );
     $contribution = $this->callAPIAndDocument('contribution', 'get', $params, __FUNCTION__, __FILE__);
-    $financialParams['id'] = $this->_contributionTypeId;
+    $financialParams['id'] = $this->_financialTypeId;
     $default = null;
     $financialType  =  CRM_Financial_BAO_FinancialType::retrieve($financialParams,$default);
 
@@ -163,51 +149,37 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
 
     $contribution2 = $this->callAPISuccess('contribution', 'create', $p);
 
-
-    $params = array(
-      'version' => $this->_apiversion,
-    );
     // now we have 2 - test getcount
-    $contribution = civicrm_api('contribution', 'getcount', array(
-      'version' => $this->_apiversion,
-      ));
+    $contribution = $this->callAPISuccess('contribution', 'getcount', array());
     $this->assertEquals(2, $contribution);
     //test id only format
-    $contribution = $this->callAPISuccess('contribution', 'get', array
-      ('version' => $this->_apiversion,
-        'id' => $this->_contribution['id'],
-        'format.only_id' => 1,
-      )
-    );
+    $contribution = $this->callAPISuccess('contribution', 'get', array(
+      'id' => $this->_contribution['id'],
+      'format.only_id' => 1,
+    ));
     $this->assertEquals($this->_contribution['id'], $contribution, print_r($contribution,true) . " in line " . __LINE__);
     //test id only format
-    $contribution = $this->callAPISuccess('contribution', 'get', array
-      ('version' => $this->_apiversion,
-        'id' => $contribution2['id'],
-        'format.only_id' => 1,
-      )
-    );
-    $this->assertEquals($contribution2['id'], $contribution);
     $contribution = $this->callAPISuccess('contribution', 'get', array(
-      'version' => $this->_apiversion,
-        'id' => $this->_contribution['id'],
-      ));
+      'id' => $contribution2['id'],
+      'format.only_id' => 1,
+    ));
+    $this->assertEquals($contribution2['id'], $contribution);
     //test id as field
-
+    $contribution = $this->callAPISuccess('contribution', 'get', array(
+      'id' => $this->_contribution['id'],
+    ));
     $this->assertEquals(1, $contribution['count'], 'In line ' . __LINE__);
-    // $this->assertEquals($this->_contribution['id'], $contribution['id'] )  ;
+
     //test get by contact id works
-    $contribution = $this->callAPISuccess('contribution', 'get', array('version' => $this->_apiversion, 'contact_id' => $this->_individualId));
+    $contribution = $this->callAPISuccess('contribution', 'get', array('contact_id' => $this->_individualId));
 
     $this->assertEquals(2, $contribution['count'], 'In line ' . __LINE__);
     $this->callAPISuccess('Contribution', 'Delete', array(
       'id' => $this->_contribution['id'],
-        'version' => $this->_apiversion,
-      ));
+    ));
     $this->callAPISuccess('Contribution', 'Delete', array(
       'id' => $contribution2['id'],
-        'version' => $this->_apiversion,
-      ));
+    ));
   }
 
 /**
@@ -218,7 +190,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contact_id' => $this->_individualId,
       'receive_date' => '2010-01-20',
       'total_amount' => 100.00,
-      'contribution_type_id' => $this->_contributionTypeId,
+      'contribution_type_id' => $this->_financialTypeId,
       'non_deductible_amount' => 10.00,
       'fee_amount' => 5.00,
       'net_amount' => 95.00,
@@ -226,23 +198,21 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 78910,
       'source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
     );
     $this->_contribution = $this->callAPISuccess('contribution', 'create', $p);
 
     $params = array(
       'contribution_id' => $this->_contribution['id'],
-      'version' => $this->_apiversion,
     );
     $contribution = $this->callAPIAndDocument('contribution', 'get', $params, __FUNCTION__, __FILE__);
-    $financialParams['id'] = $this->_contributionTypeId;
+    $financialParams['id'] = $this->_financialTypeId;
     $default = null;
     $financialType  =  CRM_Financial_BAO_FinancialType::retrieve($financialParams,$default);
 
     $this->assertEquals(1,$contribution['count']);
     $this->assertEquals($contribution['values'][$contribution['id']]['contact_id'], $this->_individualId, 'In line ' . __LINE__);
-    $this->assertEquals($contribution['values'][$contribution['id']]['financial_type_id'], $this->_contributionTypeId);
-    $this->assertEquals($contribution['values'][$contribution['id']]['contribution_type_id'], $this->_contributionTypeId);
+    $this->assertEquals($contribution['values'][$contribution['id']]['financial_type_id'], $this->_financialTypeId);
+    $this->assertEquals($contribution['values'][$contribution['id']]['contribution_type_id'], $this->_financialTypeId);
     $this->assertEquals($contribution['values'][$contribution['id']]['total_amount'], 100.00, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['non_deductible_amount'], 10.00, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['fee_amount'], 5.00, 'In line ' . __LINE__);
@@ -257,48 +227,36 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
 
     $contribution2 = $this->callAPISuccess('contribution', 'create', $p);
 
-    $params = array(
-      'version' => $this->_apiversion,
-    );
     // now we have 2 - test getcount
-    $contribution = civicrm_api('contribution', 'getcount', array(
-      'version' => $this->_apiversion,
-    ));
+    $contribution = $this->callAPISuccess('contribution', 'getcount', array());
     $this->assertEquals(2, $contribution);
     //test id only format
-    $contribution = civicrm_api('contribution', 'get', array
-      ('version' => $this->_apiversion,
-        'id' => $this->_contribution['id'],
-        'format.only_id' => 1,
-      )
-    );
+    $contribution = $this->callAPISuccess('contribution', 'get', array(
+      'id' => $this->_contribution['id'],
+      'format.only_id' => 1,
+    ));
     $this->assertEquals($this->_contribution['id'], $contribution, print_r($contribution,true) . " in line " . __LINE__);
     //test id only format
-    $contribution = civicrm_api('contribution', 'get', array
-      ('version' => $this->_apiversion,
-        'id' => $contribution2['id'],
-        'format.only_id' => 1,
-      )
-    );
+    $contribution = $this->callAPISuccess('contribution', 'get', array(
+      'id' => $contribution2['id'],
+      'format.only_id' => 1,
+    ));
     $this->assertEquals($contribution2['id'], $contribution);
     $contribution = $this->callAPISuccess('contribution', 'get', array(
-      'version' => $this->_apiversion,
       'id' => $this->_contribution['id'],
     ));
     //test id as field
     $this->assertEquals(1, $contribution['count'], 'In line ' . __LINE__);
     // $this->assertEquals($this->_contribution['id'], $contribution['id'] )  ;
     //test get by contact id works
-    $contribution = $this->callAPISuccess('contribution', 'get', array('version' => $this->_apiversion, 'contact_id' => $this->_individualId));
+    $contribution = $this->callAPISuccess('contribution', 'get', array('contact_id' => $this->_individualId));
 
     $this->assertEquals(2, $contribution['count'], 'In line ' . __LINE__);
     $this->callAPISuccess('Contribution', 'Delete', array(
     'id' => $this->_contribution['id'],
-    'version' => $this->_apiversion,
     ));
     $this->callAPISuccess('Contribution', 'Delete', array(
     'id' => $contribution2['id'],
-    'version' => $this->_apiversion,
     ));
   }
   ///////////////// civicrm_contribution_
@@ -307,7 +265,6 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contribution_id' => FALSE,
       'contact_id' => 1,
       'total_amount' => 1,
-      'version' => 3,
       'check_permissions' => false,
       'financial_type_id' => 'Donation',
     );
@@ -323,28 +280,14 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contribution_id' => FALSE,
       'contact_id' => 1,
       'total_amount' => 1,
-      'version' => 3,
       'check_permissions' => false,
       'contribution_type_id' => 3,
     );
     $contribution = $this->callAPISuccess('contribution', 'create', $params);
-    $contribution = civicrm_api('contribution', 'getsingle', array('version' => $this->_apiversion, 'id' => $contribution['id']));
+    $contribution = $this->callAPISuccess('contribution', 'getsingle', array( 'id' => $contribution['id']));
     $this->assertEquals(3, $contribution['financial_type_id']);
   }
 
-  ///////////////// civicrm_contribution_
-  function testCreateEmptyParamsContribution() {
-    $params = array('version' => $this->_apiversion);
-    $contribution = $this->callAPIFailure('contribution', 'create', $params);
-    $this->assertEquals($contribution['error_message'], 'Mandatory key(s) missing from params array: financial_type_id, total_amount, contact_id', 'In line ' . __LINE__);
-  }
-
-  function testCreateParamsWithoutRequiredKeys() {
-    $params = array('version' => 3);
-    $contribution = $this->callAPIFailure('contribution', 'create', $params);
-    $this->assertEquals($contribution['error_message'], 'Mandatory key(s) missing from params array: financial_type_id, total_amount, contact_id');
-  }
-
   /**
    * check with complete array + custom field
    * Note that the test is written on purpose without any
@@ -360,11 +303,9 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $result = $this->callAPIAndDocument($this->_entity, 'create', $params,  __FUNCTION__, __FILE__);
     $this->assertEquals($result['id'], $result['values'][$result['id']]['id']);
     $check = $this->callAPISuccess($this->_entity, 'get', array(
-        'return.custom_' . $ids['custom_field_id'] => 1,
-        'version' => 3,
-        'id' => $result['id'],
-      )
-    );
+      'return.custom_' . $ids['custom_field_id'] => 1,
+      'id' => $result['id'],
+    ));
     $this->customFieldDelete($ids['custom_field_id']);
     $this->customGroupDelete($ids['custom_group_id']);
     $this->assertEquals("custom string", $check['values'][$check['id']]['custom_' . $ids['custom_field_id']], ' in line ' . __LINE__);
@@ -379,7 +320,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
   function testCreateGetFieldsWithCustom() {
     $ids        = $this->entityCustomGroupWithSingleFieldCreate(__FUNCTION__, __FILE__);
     $idsContact = $this->entityCustomGroupWithSingleFieldCreate(__FUNCTION__, 'ContactTest.php');
-    $result     = $this->callAPISuccess('Contribution', 'getfields', array('version' => 3));
+    $result     = $this->callAPISuccess('Contribution', 'getfields', array());
     $this->assertArrayHasKey('custom_' . $ids['custom_field_id'], $result['values']);
     $this->assertArrayNotHasKey('custom_' . $idsContact['custom_field_id'], $result['values']);
     $this->customFieldDelete($ids['custom_field_id']);
@@ -394,7 +335,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contact_id' => $this->_individualId,
       'receive_date' => '20120511',
       'total_amount' => 100.00,
-      'financial_type_id'      => $this->_contributionTypeId,
+      'financial_type_id'      => $this->_financialTypeId,
       'payment_instrument_id' => 1,
       'non_deductible_amount' => 10.00,
       'fee_amount' => 50.00,
@@ -403,13 +344,11 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 67890,
       'source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
       'skipLineItem' => 1,
     );
 
     $contribution = $this->callAPISuccess('contribution', 'create', $params);
     $lineItems = $this->callAPISuccess('line_item','get',array(
-      'version' => $this->_apiversion,
       'entity_id' => $contribution['id'],
       'entity_table' => 'civicrm_contribution',
       'sequential' => 1,
@@ -425,7 +364,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contact_id' => $this->_individualId,
       'receive_date' => '20120511',
       'total_amount' => 100.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'payment_instrument_id' => 1,
       'non_deductible_amount' => 10.00,
       'fee_amount' => 50.00,
@@ -434,7 +373,6 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 67890,
       'source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
       'skipLineItem' => 1,
       'api.line_item.create' => array(
         array(
@@ -457,7 +395,6 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $contribution = $this->callAPIAndDocument('contribution', 'create', $params, __FUNCTION__,__FILE__, $description, $subfile);
 
     $lineItems = $this->callAPISuccess('line_item','get',array(
-      'version' => $this->_apiversion,
       'entity_id' => $contribution['id'],
       'entity_table' => 'civicrm_contribution',
       'sequential' => 1,
@@ -475,11 +412,9 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 67890,
       'source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
     );
 
-    $contribution = civicrm_api('contribution', 'create', $params);
-    $this->documentMe($params, $contribution, __FUNCTION__, __FILE__);
+    $contribution = $this->callAPIAndDocument('contribution', 'create', $params, __FUNCTION__, __FILE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['contact_id'], $this->_individualId, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['total_amount'], 100.00, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['financial_type_id'],1, 'In line ' . __LINE__ );
@@ -487,8 +422,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $this->assertEquals($contribution['values'][$contribution['id']]['invoice_id'], 67890, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['source'], 'SSF', 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['contribution_status_id'], 1, 'In line ' . __LINE__);
-    $lineItems = civicrm_api('line_item','get',array(
-      'version' => $this->_apiversion,
+    $lineItems = $this->callAPISuccess('line_item','get',array(
       'entity_id' => $contribution['id'],
       'entity_table' => 'civicrm_contribution',
       'sequential' => 1,
@@ -496,11 +430,10 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $this->assertEquals(1, $lineItems['count']);
     $this->assertEquals($contribution['id'], $lineItems['values'][0]['entity_id']);
     $this->assertEquals($contribution['id'], $lineItems['values'][0]['entity_id']);
-    $lineItems = civicrm_api('line_item','get',array(
-        'version' => $this->_apiversion,
-        'entity_id' => $contribution['id'],
-        'entity_table' => 'civicrm_contribution',
-        'sequential' => 1,
+    $lineItems = $this->callAPISuccess('line_item','get',array(
+      'entity_id' => $contribution['id'],
+      'entity_table' => 'civicrm_contribution',
+      'sequential' => 1,
     ));
     $this->assertEquals(1, $lineItems['count']);
     $this->_checkFinancialRecords($contribution, 'offline');
@@ -531,28 +464,26 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
   function testGetContributionByPaymentInstrument() {
     $params = $this->_params + array('payment_instrument' => 'EFT');
     $params2 = $this->_params + array('payment_instrument' => 'Cash');
-    civicrm_api('contribution','create',$params);
-    $contribution = civicrm_api('contribution','create',$params2);
-    $this->assertAPISuccess($contribution);
-    $contribution = civicrm_api('contribution','get',array('version'=> 3, 'sequential' => 1, 'contribution_payment_instrument_id' => 'Cash'));
+    $this->callAPISuccess('contribution','create',$params);
+    $this->callAPISuccess('contribution','create',$params2);
+    $contribution = $this->callAPISuccess('contribution','get',array( 'sequential' => 1, 'contribution_payment_instrument_id' => 'Cash'));
     $this->assertArrayHasKey('payment_instrument', $contribution['values'][0]);
     $this->assertEquals('Cash',$contribution['values'][0]['payment_instrument']);
     $this->assertEquals(1,$contribution['count']);
-    $contribution = civicrm_api('contribution','get',array('version'=> 3, 'sequential' => 1, 'payment_instrument_id' => 'EFT'));
+    $contribution = $this->callAPISuccess('contribution','get',array('sequential' => 1, 'payment_instrument_id' => 'EFT'));
     $this->assertArrayHasKey('payment_instrument', $contribution['values'][0]);
     $this->assertEquals('EFT',$contribution['values'][0]['payment_instrument']);
     $this->assertEquals(1, $contribution['count']);
-    $contribution = civicrm_api('contribution','get',array('version'=> 3, 'sequential' => 1, 'payment_instrument_id' => 5));
+    $contribution = $this->callAPISuccess('contribution','get',array( 'sequential' => 1, 'payment_instrument_id' => 5));
     $this->assertArrayHasKey('payment_instrument', $contribution['values'][0]);
     $this->assertEquals('EFT',$contribution['values'][0]['payment_instrument']);
     $this->assertEquals(1,$contribution['count']);
-    $contribution = civicrm_api('contribution','get',array('version'=> 3, 'sequential' => 1, 'payment_instrument' => 'EFT'));
+    $contribution = $this->callAPISuccess('contribution','get',array( 'sequential' => 1, 'payment_instrument' => 'EFT'));
     $this->assertArrayHasKey('payment_instrument', $contribution['values'][0]);
     $this->assertEquals('EFT', $contribution['values'][0]['payment_instrument']);
     $this->assertEquals(1, $contribution['count']);
-    $contribution = civicrm_api('contribution', 'update', array('id' => $contribution['id'], 'version' => $this->_apiversion, 'payment_instrument' => 'Credit Card'));
-    $this->assertAPISuccess($contribution);
-    $contribution = civicrm_api('contribution','get',array('version'=> 3, 'sequential' => 1, 'id' => $contribution['id'], ));
+    $contribution = $this->callAPISuccess('contribution', 'update', array('id' => $contribution['id'], 'payment_instrument' => 'Credit Card'));
+    $contribution = $this->callAPISuccess('contribution','get',array( 'sequential' => 1, 'id' => $contribution['id'], ));
     $this->assertArrayHasKey('payment_instrument', $contribution['values'][0]);
     $this->assertEquals('Credit Card',$contribution['values'][0]['payment_instrument']);
     $this->assertEquals(1,$contribution['count']);
@@ -567,7 +498,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contact_id' => $this->_individualId,
       'receive_date' => date('Ymd'),
       'total_amount' => 100.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'payment_instrument_id' => 1,
       'non_deductible_amount' => 10.00,
       'fee_amount' => 50.00,
@@ -576,12 +507,9 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 67890,
       'contribution_source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
     );
 
-    $contribution = civicrm_api('contribution', 'create', $params);
-
-    $this->assertAPISuccess($contribution, 'In line ' . __LINE__);
+    $contribution = $this->callAPISuccess('contribution', 'create', $params);
     $this->assertEquals($contribution['values'][$contribution['id']]['total_amount'], 100.00, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['source'], 'SSF', 'In line ' . __LINE__);
   }
@@ -594,7 +522,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contact_id' => 999,
       'receive_date' => date('Ymd'),
       'total_amount' => 100.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'payment_instrument_id' => 1,
       'non_deductible_amount' => 10.00,
       'fee_amount' => 50.00,
@@ -603,11 +531,10 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 67890,
       'contribution_source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
     );
 
-    $contribution = civicrm_api('contribution', 'create', $params);
-    $this->assertEquals($contribution['error_message'], 'contact_id is not valid : 999', 'In line ' . __LINE__);
+    $contribution = $this->callAPIFailure('contribution', 'create', $params,
+      'contact_id is not valid : 999');
   }
 
   function testCreateContributionSourceInvalidContContac() {
@@ -616,7 +543,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contribution_contact_id' => 999,
       'receive_date' => date('Ymd'),
       'total_amount' => 100.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'payment_instrument_id' => 1,
       'non_deductible_amount' => 10.00,
       'fee_amount' => 50.00,
@@ -625,11 +552,10 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 67890,
       'contribution_source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
     );
 
-    $contribution = civicrm_api('contribution', 'create', $params);
-    $this->assertEquals($contribution['error_message'], 'contact_id is not valid : 999', 'In line ' . __LINE__);
+    $contribution = $this->callAPIFailure('contribution', 'create', $params,
+      'contact_id is not valid : 999', 'In line ' . __LINE__);
   }
 
   function testCreateContributionWithNote() {
@@ -639,7 +565,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contact_id' => $this->_individualId,
       'receive_date' => '2012-01-01',
       'total_amount' => 100.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'payment_instrument_id' => 1,
       'non_deductible_amount' => 10.00,
       'fee_amount' => 50.00,
@@ -648,16 +574,13 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 67890,
       'source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
       'note' => 'my contribution note',
     );
 
-    $contribution = civicrm_api('contribution', 'create', $params);
-    $this->documentMe($params, $contribution, __FUNCTION__, __FILE__, $description, $subfile);
-    $result = civicrm_api('note', 'get', array('version' => 3, 'entity_table' => 'civicrm_contribution', 'entity_id' => $contribution['id'], 'sequential' => 1));
-    $this->assertAPISuccess($result);
+    $contribution = $this->callAPIAndDocument('contribution', 'create', $params, __FUNCTION__, __FILE__, $description, $subfile);
+    $result = $this->callAPISuccess('note', 'get', array('entity_table' => 'civicrm_contribution', 'entity_id' => $contribution['id'], 'sequential' => 1));
     $this->assertEquals('my contribution note', $result['values'][0]['note']);
-    civicrm_api('contribution', 'delete', array('version' => 3, 'id' => $contribution['id']));
+    $this->callAPISuccess('contribution', 'delete', array('id' => $contribution['id']));
   }
 
   function testCreateContributionWithNoteUniqueNameAliases() {
@@ -665,7 +588,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contact_id' => $this->_individualId,
       'receive_date' => '2012-01-01',
       'total_amount' => 100.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'payment_instrument_id' => 1,
       'non_deductible_amount' => 10.00,
       'fee_amount' => 50.00,
@@ -674,15 +597,13 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 67890,
       'source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
       'contribution_note' => 'my contribution note',
     );
 
-    $contribution = civicrm_api('contribution', 'create', $params);
-    $result = civicrm_api('note', 'get', array('version' => 3, 'entity_table' => 'civicrm_contribution', 'entity_id' => $contribution['id'], 'sequential' => 1));
-    $this->assertAPISuccess($result);
+    $contribution = $this->callAPISuccess('contribution', 'create', $params);
+    $result = $this->callAPISuccess('note', 'get', array('entity_table' => 'civicrm_contribution', 'entity_id' => $contribution['id'], 'sequential' => 1));
     $this->assertEquals('my contribution note', $result['values'][0]['note']);
-    civicrm_api('contribution', 'delete', array('version' => 3, 'id' => $contribution['id']));
+    $this->callAPISuccess('contribution', 'delete', array('id' => $contribution['id']));
   }
   /*
      * This is the test for creating soft credits - however a 'get' is not yet possible via API
@@ -692,17 +613,14 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
   function testCreateContributionWithSoftCredt() {
     $description = "Demonstrates creating contribution with SoftCredit";
     $subfile     = "ContributionCreateWithSoftCredit";
-    $contact2    = civicrm_api('Contact', 'create', array('version' => 3, 'display_name' => 'superman', 'version' => 3, 'contact_type' => 'Individual'));
+    $contact2    = $this->callAPISuccess('Contact', 'create', array('display_name' => 'superman', 'contact_type' => 'Individual'));
     $params      = $this->_params + array(
       'soft_credit_to' => $contact2['id'],
 
     );
 
-    $contribution = civicrm_api('contribution', 'create', $params);
-    $this->assertAPISuccess($contribution);
-    $this->documentMe($params, $contribution, __FUNCTION__, __FILE__, $description, $subfile);
-    //     $result = civicrm_api('contribution','get', array('version' => 3,'return'=> 'soft_credit_to', 'sequential' => 1));
-    //     $this->assertAPISuccess($result);
+    $contribution = $this->callAPIAndDocument('contribution', 'create', $params, __FUNCTION__, __FILE__, $description, $subfile);
+    //     $result = $this->callAPISuccess('contribution','get', array('return'=> 'soft_credit_to', 'sequential' => 1));
     //     $this->assertEquals($contact2['id'], $result['values'][$result['id']]['soft_credit_to']) ;
     //    well - the above doesn't work yet so lets do SQL
     $query = "SELECT count(*) FROM civicrm_contribution_soft WHERE contact_id = " . $contact2['id'];
@@ -710,8 +628,8 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $count = CRM_Core_DAO::singleValueQuery($query);
     $this->assertEquals(1, $count);
 
-    civicrm_api('contribution', 'delete', array('version' => 3, 'id' => $contribution['id']));
-    civicrm_api('contact', 'delete', array('version' => 3, 'id' => $contact2['id']));
+    $this->callAPISuccess('contribution', 'delete', array('id' => $contribution['id']));
+    $this->callAPISuccess('contact', 'delete', array('id' => $contact2['id']));
   }
 
   /**
@@ -719,10 +637,9 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
    */
   function testContributionCreateExample() {
     //make sure at least on page exists since there is a truncate in tear down
-    $page = civicrm_api('contribution_page', 'create', $this->_pageParams);
-    $this->assertAPISuccess($page);
+    $page = $this->callAPISuccess('contribution_page', 'create', $this->_pageParams);
     require_once 'api/v3/examples/ContributionCreate.php';
-    $result         = contribution_create_example();
+    $result = contribution_create_example();
     $this->assertAPISuccess($result);
     $contributionId = $result['id'];
     $expectedResult = contribution_create_expectedresult();
@@ -744,11 +661,9 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 67890,
       'source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
     );
 
-    $contribution = civicrm_api('contribution', 'create', $params);
-    $this->documentMe($params, $contribution, __FUNCTION__, __FILE__);
+    $contribution = $this->callAPIAndDocument('contribution', 'create', $params, __FUNCTION__, __FILE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['contact_id'], $this->_individualId, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['total_amount'], 100.00, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['financial_type_id'],1, 'In line ' . __LINE__ );
@@ -756,8 +671,8 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $this->assertEquals($contribution['values'][$contribution['id']]['invoice_id'], 67890, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['source'], 'SSF', 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['contribution_status_id'], 1, 'In line ' . __LINE__);
-    $lineItems = civicrm_api('line_item','get',array(
-      'version' => $this->_apiversion,
+    $lineItems = $this->callAPISuccess('line_item','get',array(
+
       'entity_id' => $contribution['id'],
       'entity_table' => 'civicrm_contribution',
       'sequential' => 1,
@@ -765,8 +680,8 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $this->assertEquals(1, $lineItems['count']);
     $this->assertEquals($contribution['id'], $lineItems['values'][0]['entity_id']);
     $this->assertEquals($contribution['id'], $lineItems['values'][0]['entity_id']);
-    $lineItems = civicrm_api('line_item','get',array(
-        'version' => $this->_apiversion,
+    $lineItems = $this->callAPISuccess('line_item','get',array(
+
         'entity_id' => $contribution['id'],
         'entity_table' => 'civicrm_contribution',
         'sequential' => 1,
@@ -781,8 +696,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
    */
   function testCreateContributionOnline() {
     $paymentProcessor = CRM_Financial_BAO_PaymentProcessor::create($this->_processorParams);
-    $contributionPage = civicrm_api( 'contribution_page','create',  $this->_pageParams );
-    $this->assertAPISuccess($contributionPage);
+    $contributionPage = $this->callAPISuccess( 'contribution_page','create',  $this->_pageParams );
     $params = array(
       'contact_id' => $this->_individualId,
       'receive_date' => '20120511',
@@ -794,11 +708,10 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 67890,
       'source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
+
     );
 
-    $contribution = civicrm_api('contribution', 'create', $params);
-    $this->documentMe($params, $contribution, __FUNCTION__, __FILE__);
+    $contribution = $this->callAPIAndDocument('contribution', 'create', $params, __FUNCTION__, __FILE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['contact_id'], $this->_individualId, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['total_amount'], 100.00, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['financial_type_id'],1, 'In line ' . __LINE__ );
@@ -836,8 +749,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
   function testCreateContributionPayLaterOnline() {
     $paymentProcessor = CRM_Financial_BAO_PaymentProcessor::create($this->_processorParams);
     $this->_pageParams['is_pay_later'] = 1;
-    $contributionPage = civicrm_api( 'contribution_page','create',$this->_pageParams );
-    $this->assertAPISuccess($contributionPage);
+    $contributionPage = $this->callAPISuccess( 'contribution_page','create',$this->_pageParams );
     $params = array(
       'contact_id' => $this->_individualId,
       'receive_date' => '20120511',
@@ -849,11 +761,10 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 67890,
       'source' => 'SSF',
       'contribution_status_id' => 2,
-      'version' => $this->_apiversion,
+
     );
 
-    $contribution = civicrm_api('contribution', 'create', $params);
-    $this->documentMe($params, $contribution, __FUNCTION__, __FILE__);
+    $contribution = $this->callAPIAndDocument('contribution', 'create', $params, __FUNCTION__, __FILE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['contact_id'], $this->_individualId, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['total_amount'], 100.00, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['financial_type_id'],1, 'In line ' . __LINE__ );
@@ -870,8 +781,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
    */
   function testCreateContributionPendingOnline() {
     $paymentProcessor = CRM_Financial_BAO_PaymentProcessor::create($this->_processorParams);
-    $contributionPage = civicrm_api( 'contribution_page', 'create', $this->_pageParams );
-    $this->assertAPISuccess($contributionPage);
+    $contributionPage = $this->callAPISuccess( 'contribution_page', 'create', $this->_pageParams );
     $params = array(
       'contact_id' => $this->_individualId,
       'receive_date' => '20120511',
@@ -882,11 +792,9 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 67890,
       'source' => 'SSF',
       'contribution_status_id' => 2,
-      'version' => $this->_apiversion,
     );
 
-    $contribution = civicrm_api('contribution', 'create', $params);
-    $this->documentMe($params, $contribution, __FUNCTION__, __FILE__);
+    $contribution = $this->callAPIAndDocument('contribution', 'create', $params, __FUNCTION__, __FILE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['contact_id'], $this->_individualId, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['total_amount'], 100.00, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contribution['id']]['financial_type_id'],1, 'In line ' . __LINE__ );
@@ -901,9 +809,9 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
    * Function tests that line items, financial records are updated when contribution amount is changed
    */
   function testCreateUpdateContributionChangeTotal() {
-    $contribution = civicrm_api('contribution', 'create', $this->_params);
-    $lineItems = civicrm_api('line_item','getvalue', array(
-      'version' => $this->_apiversion,
+    $contribution = $this->callAPISuccess('contribution', 'create', $this->_params);
+    $lineItems = $this->callAPISuccess('line_item','getvalue', array(
+
       'entity_id' => $contribution['id'],
       'entity_table' => 'civicrm_contribution',
       'sequential' => 1,
@@ -914,13 +822,13 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     // Financial trxn SUM = 100 + 5 (fee)
     $this->assertEquals('105.00', $trxnAmount);
     $newParams = array(
-      'version' => $this->_apiversion,
+
       'id' => $contribution['id'],
       'total_amount' => '125');
-    $contribution = civicrm_api('contribution', 'update', $newParams);
+    $contribution = $this->callAPISuccess('contribution', 'update', $newParams);
+
+    $lineItems = $this->callAPISuccess('line_item','getvalue',array(
 
-    $lineItems = civicrm_api('line_item','getvalue',array(
-        'version' => $this->_apiversion,
         'entity_id' => $contribution['id'],
         'entity_table' => 'civicrm_contribution',
         'sequential' => 1,
@@ -943,19 +851,19 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contact_id' => $this->_individualId,
       'receive_date' => '2012-01-01',
       'total_amount' => 100.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'payment_instrument_id' => 1,
       'contribution_status_id' => 2,
       'is_pay_later' => 1,
-      'version' => $this->_apiversion,
+
     );
-    $contribution = civicrm_api('contribution', 'create', $contribParams);
+    $contribution = $this->callAPISuccess('contribution', 'create', $contribParams);
 
     $newParams = array_merge($contribParams, array(
       'id' => $contribution['id'],
       'contribution_status_id' => 1,)
     );
-    $contribution = civicrm_api('contribution', 'update', $newParams);
+    $contribution = $this->callAPISuccess('contribution', 'update', $newParams);
     $contribution = $contribution['values'][$contribution['id']];
     $this->assertEquals($contribution['contribution_status_id'],'1');
     $this->_checkFinancialItem($contribution['id'], 'paylater');
@@ -970,19 +878,18 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $contribParams = array(
       'contact_id' => $this->_individualId,
       'total_amount' => 100.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'payment_instrument_id' => 4,
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
+
     );
-    $contribution = civicrm_api('contribution', 'create', $contribParams);
+    $contribution = $this->callAPISuccess('contribution', 'create', $contribParams);
 
     $newParams = array_merge($contribParams, array(
      'id' => $contribution['id'],
      'payment_instrument_id' => $instrumentId,)
     );
-    $contribution = civicrm_api('contribution', 'update', $newParams);
-    $this->assertAPISuccess($contribution);
+    $contribution = $this->callAPISuccess('contribution', 'update', $newParams);
     $this->_checkFinancialTrxn($contribution, 'paymentInstrument');
   }
 
@@ -994,19 +901,19 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contact_id' => $this->_individualId,
       'receive_date' => '2012-01-01',
       'total_amount' => 100.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'payment_instrument_id' => 4,
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
+
     );
-    $contribution = civicrm_api('contribution', 'create', $contribParams);
+    $contribution = $this->callAPISuccess('contribution', 'create', $contribParams);
     $newParams = array_merge($contribParams, array(
      'id' => $contribution['id'],
      'contribution_status_id' => 7,
       )
     );
 
-    $contribution = civicrm_api('contribution', 'update', $newParams);
+    $contribution = $this->callAPISuccess('contribution', 'update', $newParams);
     $this->_checkFinancialTrxn($contribution, 'refund');
     $this->_checkFinancialItem($contribution['id'], 'refund');
   }
@@ -1022,16 +929,16 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'financial_type_id' => 1,
       'payment_instrument_id' => 1,
       'contribution_status_id' => 1,
-      'version' => 3,
     );
-    $contribution = civicrm_api('contribution', 'create', $contribParams);
+    $contribution = $this->callAPISuccess('contribution', 'create', $contribParams);
     $newParams = array_merge($contribParams, array(
      'id' => $contribution['id'],
      'contribution_status_id' => 2,
       )
     );
-    $contribution = $this->callAPIFailure('contribution', 'update', $newParams);
-    $this->assertEquals($contribution['error_message'], ts('Cannot change contribution status from Completed to Pending.'), 'In line ' . __LINE__);
+    $contribution = $this->callAPIFailure('contribution', 'update', $newParams,
+      ts('Cannot change contribution status from Completed to Pending.')
+    );
 
   }
 
@@ -1043,19 +950,19 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contact_id' => $this->_individualId,
       'receive_date' => '2012-01-01',
       'total_amount' => 100.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'payment_instrument_id' => 1,
       'contribution_status_id' => 2,
       'is_pay_later' => 1,
-      'version' => $this->_apiversion,
+
     );
-    $contribution = civicrm_api('contribution', 'create', $contribParams);
+    $contribution = $this->callAPISuccess('contribution', 'create', $contribParams);
     $newParams = array_merge($contribParams, array(
      'id' => $contribution['id'],
      'contribution_status_id' => 3,
       )
     );
-    $contribution = civicrm_api('contribution', 'update', $newParams);
+    $contribution = $this->callAPISuccess('contribution', 'update', $newParams);
     $this->_checkFinancialTrxn($contribution, 'cancelPending');
     $this->_checkFinancialItem($contribution['id'], 'cancelPending');
   }
@@ -1071,15 +978,15 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'financial_type_id' => 1,
       'payment_instrument_id' => 1,
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
+
     );
-    $contribution = civicrm_api('contribution', 'create', $contribParams);
+    $contribution = $this->callAPISuccess('contribution', 'create', $contribParams);
     $newParams = array_merge($contribParams, array(
      'id' => $contribution['id'],
      'financial_type_id' => 3,
       )
     );
-    $contribution = civicrm_api('contribution', 'update', $newParams);
+    $contribution = $this->callAPISuccess('contribution', 'update', $newParams);
     $this->_checkFinancialTrxn($contribution, 'changeFinancial');
     $this->_checkFinancialItem($contribution['id'], 'changeFinancial');
   }
@@ -1088,14 +995,12 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
   //CHANGE: we require the API to do an incremental update
   function testCreateUpdateContribution() {
 
-    $contributionID = $this->contributionCreate($this->_individualId, $this->_contributionTypeId, 'idofsh', 212355);
+    $contributionID = $this->contributionCreate($this->_individualId, $this->_financialTypeId, 'idofsh', 212355);
     $old_params = array(
       'contribution_id' => $contributionID,
-      'version' => $this->_apiversion,
+
     );
-    $original = civicrm_api('contribution', 'get', $old_params);
-    //Make sure it came back
-    $this->assertAPISuccess($original, 'In line ' . __LINE__);
+    $original = $this->callAPISuccess('contribution', 'get', $old_params);
     $this->assertEquals($original['id'], $contributionID, 'In line ' . __LINE__);
     //set up list of old params, verify
 
@@ -1122,25 +1027,25 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'id' => $contributionID,
       'contact_id' => $this->_individualId,
       'total_amount' => 110.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'non_deductible_amount' => 10.00,
       'net_amount' => 100.00,
       'contribution_status_id' => 1,
       'note' => 'Donating for Nobel Cause',
-      'version' => $this->_apiversion,
+
     );
 
-    $contribution = civicrm_api('contribution', 'create', $params);
+    $contribution = $this->callAPISuccess('contribution', 'create', $params);
 
     $new_params = array(
       'contribution_id' => $contribution['id'],
-      'version' => $this->_apiversion,
+
     );
-    $contribution = civicrm_api('contribution', 'get', $new_params);
+    $contribution = $this->callAPISuccess('contribution', 'get', $new_params);
 
     $this->assertEquals($contribution['values'][$contributionID]['contact_id'], $this->_individualId, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contributionID]['total_amount'], 110.00, 'In line ' . __LINE__);
-        $this->assertEquals($contribution['values'][$contributionID]['financial_type_id'],$this->_contributionTypeId, 'In line ' . __LINE__ );
+        $this->assertEquals($contribution['values'][$contributionID]['financial_type_id'],$this->_financialTypeId, 'In line ' . __LINE__ );
     $this->assertEquals($contribution['values'][$contributionID]['instrument_id'], $old_payment_instrument, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contributionID]['non_deductible_amount'], 10.00, 'In line ' . __LINE__);
     $this->assertEquals($contribution['values'][$contributionID]['fee_amount'], $old_fee_amount, 'In line ' . __LINE__);
@@ -1151,15 +1056,14 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $this->assertEquals($contribution['values'][$contributionID]['contribution_status'], 'Completed', 'In line ' . __LINE__);
     $params = array(
       'contribution_id' => $contributionID,
-      'version' => $this->_apiversion,
+
     );
-    $result = civicrm_api('contribution', 'delete', $params);
-    $this->assertAPISuccess($result, 'in line' . __LINE__);
+    $result = $this->callAPISuccess('contribution', 'delete', $params);
   }
 
   ///////////////// civicrm_contribution_delete methods
   function testDeleteEmptyParamsContribution() {
-    $params = array('version' => $this->_apiversion);
+    $params = array();
     $contribution = $this->callAPIFailure('contribution', 'delete', $params);
   }
 
@@ -1172,21 +1076,18 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
   function testDeleteWrongParamContribution() {
     $params = array(
       'contribution_source' => 'SSF',
-      'version' => $this->_apiversion,
+
     );
     $contribution = $this->callAPIFailure('contribution', 'delete', $params);
   }
 
   function testDeleteContribution() {
 
-    $contributionID = $this->contributionCreate($this->_individualId, $this->_contributionTypeId, 'dfsdf', 12389);
+    $contributionID = $this->contributionCreate($this->_individualId, $this->_financialTypeId, 'dfsdf', 12389);
     $params = array(
       'id' => $contributionID,
-      'version' => $this->_apiversion,
     );
-    $result = civicrm_api('contribution', 'delete', $params);
-    $this->documentMe($params, $result, __FUNCTION__, __FILE__);
-    $this->assertAPISuccess($result, 0, 'In line ' . __LINE__);
+    $this->callAPIAndDocument('contribution', 'delete', $params, __FUNCTION__, __FILE__);
   }
 
   /**
@@ -1194,13 +1095,13 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
    *  All available contributions expected.
    */
   function testSearchEmptyParams() {
-    $params = array('version' => $this->_apiversion);
+    $params = array();
 
     $p = array(
       'contact_id' => $this->_individualId,
       'receive_date' => date('Ymd'),
       'total_amount' => 100.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'non_deductible_amount' => 10.00,
       'fee_amount' => 5.00,
       'net_amount' => 95.00,
@@ -1208,11 +1109,11 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'invoice_id' => 78910,
       'source' => 'SSF',
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
+
     );
-    $contribution = civicrm_api('contribution', 'create', $p);
+    $contribution = $this->callAPISuccess('contribution', 'create', $p);
 
-    $result = civicrm_api('contribution', 'get', $params);
+    $result = $this->callAPISuccess('contribution', 'get', $params);
     // We're taking the first element.
     $res = $result['values'][$contribution['id']];
 
@@ -1239,31 +1140,31 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       'contact_id' => $this->_individualId,
       'receive_date' => date('Ymd'),
       'total_amount' => 100.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'non_deductible_amount' => 10.00,
       'contribution_status_id' => 1,
-      'version' => $this->_apiversion,
+
     );
-    $contribution1 = civicrm_api('contribution', 'create', $p1);
+    $contribution1 = $this->callAPISuccess('contribution', 'create', $p1);
 
     $p2 = array(
       'contact_id' => $this->_individualId,
       'receive_date' => date('Ymd'),
       'total_amount' => 200.00,
-      'financial_type_id' => $this->_contributionTypeId,
+      'financial_type_id' => $this->_financialTypeId,
       'non_deductible_amount' => 20.00,
       'trxn_id' => 5454565,
       'invoice_id' => 1212124,
       'fee_amount' => 50.00,
       'net_amount' => 60.00,
       'contribution_status_id' => 2,
-      'version' => $this->_apiversion,
+
     );
     $contribution2 = $this->callAPISuccess('contribution', 'create', $p2);
 
     $params = array(
       'contribution_id' => $contribution2['id'],
-      'version' => $this->_apiversion,
+
     );
     $result = $this->callAPISuccess('contribution', 'get', $params);
     $res = $result['values'][$contribution2['id']];
@@ -1283,6 +1184,56 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $this->contributionDelete($contribution2['id']);
   }
 
+  /**
+   * Test completing a transaction via the API
+   *
+   * Note that we are creating a logged in user because email goes out from
+   * that person
+   */
+  function testCompleteTransaction() {
+    $mut = new CiviMailUtils( $this, true );
+    $this->createLoggedInUser();
+    $params = array_merge($this->_params, array('contribution_status_id' => 1,));
+    $contribution = $this->callAPISuccess('contribution','create', $params);
+    $apiResult = $this->callAPISuccess('contribution', 'completetransaction', array(
+      'id' => $contribution['id'],
+    )
+    );
+    $contribution = $this->callAPISuccess('contribution', 'get', array('id' => $contribution['id'], 'sequential' => 1,));
+    $this->assertEquals('Completed', $contribution['values'][0]['contribution_status']);
+    $mut->checkMailLog(array(
+      'Receipt - Contribution',
+      'Please print this confirmation for your records.',
+    ));
+    $mut->stop();
+  }
+
+  /**
+   * Test completing a transaction with an event via the API
+   *
+   * Note that we are creating a logged in user because email goes out from
+   * that person
+   */
+  function testCompleteTransactionWithParticipantRecord() {
+    $mut = new CiviMailUtils( $this, true );
+    $mut->clearMessages();
+    $this->createLoggedInUser();
+    $contributionID = $this->createPendingParticipantContribution();
+    $apiResult = $this->callAPISuccess('contribution', 'completetransaction', array(
+      'id' => $contributionID,
+    )
+    );
+    $participantStatus = $this->callAPISuccessGetValue('participant', array('id' => $this->ids['participant'], 'return' => 'participant_status_id'));
+    $this->assertEquals(1, $participantStatus);
+    $mut->checkMailLog(array(
+      'Annual CiviCRM meet',
+      'Event',
+      'This letter is a confirmation that your registration has been received and your status has been updated to registered for the following',
+    ));
+  $mut->stop();
+
+  }
+
   /**
    * Test sending a mail via the API
    */
@@ -1290,7 +1241,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $mut = new CiviMailUtils( $this, true );
     $contribution = $this->callAPISuccess('contribution','create',$this->_params);
     $apiResult = $this->callAPISuccess('contribution', 'sendconfirmation', array(
-      'version' => $this->_apiversion,
+
       'id' => $contribution['id'],
       'receipt_from_email' => 'api@civicrm.org',
       )
@@ -1325,16 +1276,15 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       // to ensure it matches later on
       'register_date' => '2007-07-21 00:00:00',
       'source' => 'Online Event Registration: API Testing',
-      'version' => $this->_apiversion,
+
     );
     $participant = $this->callAPISuccess('participant', 'create', $participantParams);
     $this->callAPISuccess('participant_payment', 'create', array(
-      'version' => 3,
       'participant_id' => $participant['id'],
       'contribution_id' => $contribution['id'],
     ));
     $apiResult = $this->callAPISuccess('contribution', 'sendconfirmation', array(
-      'version' => $this->_apiversion,
+
       'id' => $contribution['id'],
       'receipt_from_email' => 'api@civicrm.org',
       )
@@ -1357,18 +1307,14 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
   */
   function contributionGetnCheck($params, $id, $delete = 1) {
 
-    $contribution = civicrm_api('Contribution', 'Get', array(
+    $contribution = $this->callAPISuccess('Contribution', 'Get', array(
       'id' => $id,
-        'version' => $this->_apiversion,
+
       ));
 
     if ($delete) {
-      civicrm_api('contribution', 'delete', array(
-        'id' => $id,
-          'version' => $this->_apiversion,
-        ));
+      $this->callAPISuccess('contribution', 'delete', array('id' => $id));
     }
-    $this->assertAPISuccess($contribution, 0, 'In line ' . __LINE__);
     $values = $contribution['values'][$contribution['id']];
     $params['receive_date'] = date('Y-m-d H:i:s', strtotime($params['receive_date']));
     // this is not returned in id format
@@ -1376,13 +1322,32 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $params['contribution_source'] = $params['source'];
     unset($params['source']);
     foreach ($params as $key => $value) {
-      if ($key == 'version') {
-        continue;
-      }
       $this->assertEquals($value, $values[$key], $key . " value: $value doesn't match " . print_r($values, TRUE) . 'in line' . __LINE__);
     }
   }
 
+  /**
+   * Create a pending contribution & linked pending participant record
+   * (along with an event)
+   */
+  function createPendingParticipantContribution(){
+    $event = $this->eventCreate(array('is_email_confirm' => 1, 'confirm_from_email' => 'test@civicrm.org',));
+    $participantID = $this->participantCreate(array('event_id' => $event['id'], 'status_id' => 6));
+    $this->ids['participant']  = $participantID;
+    $params = array_merge($this->_params, array('contribution_status_id' => 2, 'financial_type_id' => 'Event Fee'));
+    $contribution = $this->callAPISuccess('contribution','create', $params);
+    $this->callAPISuccess('participant_payment', 'create', array('contribution_id' => $contribution['id'], 'participant_id' => $participantID));
+    $lineItem = $this->callAPISuccess('line_item', 'get', array(
+      'entity_id' => $contribution['id'],
+      'entity_table' => 'civicrm_contribution',
+      'api.line_item.create' => array(
+        'entity_id' => $participantID,
+        'entity_table' => 'civicrm_participant',
+      ),
+    ));
+    return $contribution['id'];
+  }
+
  function _getFinancialTrxnAmount($contId) {
    $query = "SELECT
      SUM( ft.total_amount ) AS total
@@ -1541,9 +1506,8 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
      'value' => '6',
      'weight' => '6',
      'is_active' => 1,
-     'version' => 3,
 );
-   $optionValue = civicrm_api('option_value', 'create', $optionParams);
+   $optionValue = $this->callAPISuccess('option_value', 'create', $optionParams);
    $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Asset Account is' "));
    $financialParams = array(
      'entity_table' => 'civicrm_option_value',