X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fapi%2Fv3%2FContributionTest.php;h=6dd0d2b705a9ba54073a8484d922f5e0880ab2db;hb=4750ab016d04483cb152df393d09dad3dcf1cc4a;hp=2102975ec3dfd11acc452d7559732b454edcadf8;hpb=13abea2f0577aaedd56ac4ba673d6ee8e0aa4954;p=civicrm-core.git diff --git a/tests/phpunit/api/v3/ContributionTest.php b/tests/phpunit/api/v3/ContributionTest.php index 2102975ec3..6dd0d2b705 100644 --- a/tests/phpunit/api/v3/ContributionTest.php +++ b/tests/phpunit/api/v3/ContributionTest.php @@ -3,7 +3,7 @@ +--------------------------------------------------------------------+ | CiviCRM version 4.7 | +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2017 | + | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ | This file is a part of CiviCRM. | | | @@ -682,15 +682,26 @@ class api_v3_ContributionTest extends CiviUnitTestCase { /** * Create test with unique field name on source. + * + * @param string $thousandSeparator + * punctuation used to refer to thousands. + * + * @dataProvider getThousandSeparators */ - public function testCreateDefaultNow() { - + public function testCreateDefaultNow($thousandSeparator) { + $this->setCurrencySeparators($thousandSeparator); $params = $this->_params; - unset($params['receive_date']); + unset($params['receive_date'], $params['net_amount']); + + $params['total_amount'] = $this->formatMoneyInput(5000.77); + $params['fee_amount'] = $this->formatMoneyInput(.77); $contribution = $this->callAPISuccess('contribution', 'create', $params); $contribution = $this->callAPISuccessGetSingle('contribution', array('id' => $contribution['id'])); $this->assertEquals(date('Y-m-d'), date('Y-m-d', strtotime($contribution['receive_date']))); + $this->assertEquals(5000.77, $contribution['total_amount'], 'failed to handle ' . $this->formatMoneyInput(5000.77)); + $this->assertEquals(.77, $contribution['fee_amount']); + $this->assertEquals(5000, $contribution['net_amount']); } /** @@ -2485,6 +2496,61 @@ class api_v3_ContributionTest extends CiviUnitTestCase { )); } + /** + * CRM-20685 Repeattransaction produces incorrect Financial Type ID (in specific circumstance) - if number of lineItems = 1. + * + * This case happens when the line item & contribution do not have the same type in his initiating transaction. + */ + public function testRepeatTransactionUpdatedFinancialTypeAndNotEquals() { + $originalContribution = $this->setUpRecurringContribution(array(), array('financial_type_id' => 2)); + // This will made the trick to get the not equals behaviour. + $this->callAPISuccess('line_item', 'create', array('id' => 1, 'financial_type_id' => 4)); + $this->callAPISuccess('contribution', 'repeattransaction', array( + 'contribution_recur_id' => $originalContribution['id'], + 'contribution_status_id' => 'Completed', + 'trxn_id' => uniqid(), + )); + $lineItemParams = array( + 'entity_id' => $originalContribution['id'], + 'sequential' => 1, + 'return' => array( + 'entity_table', + 'qty', + 'unit_price', + 'line_total', + 'label', + 'financial_type_id', + 'deductible_amount', + 'price_field_value_id', + 'price_field_id', + ), + ); + $this->callAPISuccessGetSingle('contribution', array( + 'total_amount' => 100, + 'financial_type_id' => 2, + )); + $lineItem1 = $this->callAPISuccess('line_item', 'get', array_merge($lineItemParams, array( + 'entity_id' => $originalContribution['id'], + ))); + $expectedLineItem = array_merge( + $lineItem1['values'][0], array( + 'line_total' => '100.00', + 'unit_price' => '100.00', + 'financial_type_id' => 4, + 'contribution_type_id' => 4, + ) + ); + + $lineItem2 = $this->callAPISuccess('line_item', 'get', array_merge($lineItemParams, array( + 'entity_id' => $originalContribution['id'] + 1, + ))); + $this->callAPISuccess('line_item', 'create', array('id' => 1, 'financial_type_id' => 1)); + unset($expectedLineItem['id'], $expectedLineItem['entity_id']); + unset($lineItem2['values'][0]['id'], $lineItem2['values'][0]['entity_id']); + $this->assertEquals($expectedLineItem, $lineItem2['values'][0]); + } + + /** * Test completing a transaction does not 'mess' with net amount (CRM-15960). */