Awight has uploaded a new change for review. https://gerrit.wikimedia.org/r/283003
Change subject: Merge master into deployment ...................................................................... Merge master into deployment d6f9a8b142d3fa478bb5b47dbe78f1a681e3142f New column headers for JP Morgan eaa2d2e74f88351a15cd7a9b12d4c008348e8dd8 Split out contribution save hook de93632e477fe24a0ffad78a639bcf9aa13855e7 Fix source field on partial refunds c33e3505fce9511e544fdf29c9f8b5e187d6232c Whitespace + readability Change-Id: Idf27e6c6731fd60d5b5aba52441f992f1ab267b3 --- D sites/all/modules/offline2civicrm/tests/JpMorganFileTest.php D sites/all/modules/offline2civicrm/tests/data/jpmorgan.csv D sites/all/modules/wmf_civicrm/tests/phpunit/InstallFunctionsTest.php D sites/all/modules/wmf_civicrm/tests/phpunit/RefundTest.php 4 files changed, 0 insertions(+), 414 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/crm refs/changes/03/283003/1 diff --git a/sites/all/modules/offline2civicrm/tests/JpMorganFileTest.php b/sites/all/modules/offline2civicrm/tests/JpMorganFileTest.php deleted file mode 100644 index 415049d..0000000 --- a/sites/all/modules/offline2civicrm/tests/JpMorganFileTest.php +++ /dev/null @@ -1,103 +0,0 @@ -<<<<<<< HEAD (a20ac4 Merge master into deployment) -======= -<?php - -/** - * @group Import - * @group Offline2Civicrm - */ -class JpMorganFileTest extends BaseChecksFileTest { - protected $epochtime; - protected $strtime; - - function setUp() { - parent::setUp(); - - require_once __DIR__ . "/includes/JpMorganFileProbe.php"; - - $this->strtime = '04/02/2000'; - $this->epochtime = wmf_common_date_parse_string('2000-04-02'); - $this->setExchangeRates( $this->epochtime, array( 'USD' => 1, 'EUR' => 3 ) ); - } - - function testParseRow() { - $data = array( - 'Account Name' => 'Testes EUR_Public', - 'Currency' => 'EUR', - 'Customer Reference' => 'UNAVAILABLE', - 'Bank Reference' => '1234TEST', - 'Transaction Date' => '04/01/2000', - 'Description' => 'FOO CREDIT RECEIVED', - 'Value Date' => $this->strtime, - 'Credit Amount' => '5.50', - ); - $expected_normal = array( - 'contact_source' => 'check', - 'contact_type' => 'Individual', - 'country' => 'US', - 'currency' => 'EUR', - 'date' => 954547200, - 'direct_mail_appeal' => 'White Mail', - 'email' => 'nob...@wikimedia.org', - 'gateway_account' => 'Testes EUR_Public', - 'gateway' => 'jpmorgan', - 'gateway_txn_id' => '1234TEST', - 'gift_source' => 'Community Gift', - 'gross' => '5.50', - 'no_thank_you' => 'No Contact Details', - 'payment_instrument' => 'JP Morgan EUR', - 'restrictions' => 'Unrestricted - General', - 'settlement_date' => $this->epochtime, - ); - - $importer = new JpMorganFileProbe( "no URI" ); - $output = $importer->_parseRow( $data ); - - $this->stripSourceData( $output ); - $this->assertEquals( $expected_normal, $output ); - } - - function testImport() { - //FIXME - $_GET['q'] = ''; - //FIXME - civicrm_initialize(); - - // Clean slate. - $contributions = wmf_civicrm_get_contributions_from_gateway_id( 'jpmorgan', '1234TEST' ); - if ( $contributions ) { - foreach ( $contributions as $existing ) { - $success = civicrm_api_classapi()->Contribution->Delete( array( - 'id' => $existing['id'], - 'version' => 3, - ) ); - $this->assertTrue( $success ); - } - } - - $this->setExchangeRates( wmf_common_date_parse_string( '2000-04-01' ), array( 'USD' => 1, 'EUR' => 3 ) ); - - $importer = new JpMorganFileProbe( __DIR__ . "/data/jpmorgan.csv" ); - $importer->import(); - - $contribution = wmf_civicrm_get_contributions_from_gateway_id( 'jpmorgan', '1234TEST' ); - $this->assertEquals( 1, count( $contribution ) ); - $this->assertEquals( $contribution[0]['trxn_id'], 'JPMORGAN 1234TEST' ); - } - - /** - * @expectedException WmfException - * @expectedExceptionCode WmfException::INVALID_FILE_FORMAT - * @expectedExceptionMessage Duplicate column headers: CURRENCY, reference - */ - function testImportDuplicateHeaders() { - //FIXME - $_GET['q'] = ''; - //FIXME - civicrm_initialize(); - - $importer = new JpMorganFileProbe( __DIR__ . "/data/duplicate_header.csv" ); - $importer->import(); - } -} ->>>>>>> BRANCH (c33e35 Whitespace + readability) diff --git a/sites/all/modules/offline2civicrm/tests/data/jpmorgan.csv b/sites/all/modules/offline2civicrm/tests/data/jpmorgan.csv deleted file mode 100644 index c11e60a..0000000 --- a/sites/all/modules/offline2civicrm/tests/data/jpmorgan.csv +++ /dev/null @@ -1,5 +0,0 @@ -<<<<<<< HEAD (a20ac4 Merge master into deployment) -======= -Account Name,Currency,Customer Reference,Bank Reference,Transaction Date,Description,Value Date,Credit Amount -Testes EUR_Public,EUR,UNAVAILABLE,1234TEST,04/01/2000,FOO CREDIT RECEIVED,04/02/2000,5.50 ->>>>>>> BRANCH (c33e35 Whitespace + readability) diff --git a/sites/all/modules/wmf_civicrm/tests/phpunit/InstallFunctionsTest.php b/sites/all/modules/wmf_civicrm/tests/phpunit/InstallFunctionsTest.php deleted file mode 100644 index c7765ef..0000000 --- a/sites/all/modules/wmf_civicrm/tests/phpunit/InstallFunctionsTest.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php - -require_once( __DIR__ . "/../../bootstrap.inc" ); - -/** - * @group WmfCivicrm - */ -class InstallFunctionsTest extends BaseWmfDrupalPhpUnitTestCase { - - /** - * Test that the install function for creating option values works. - * - * Test with multiple values and an appostrophe for good measure. - * - * @throws \CiviCRM_API3_Exception - */ - public function testCreateOptionValues() { - wmf_civicrm_create_option_values( 'payment_instrument', array('Monopoly Money', "IOU's", 'Drakmar')); - $options = civicrm_api3('Contribution', 'getoptions', array('field' => 'payment_instrument_id')); - $this->assertTrue(in_array('Monopoly Money', $options['values'])); - $this->assertTrue(in_array("IOU's", $options['values'])); - $this->assertTrue(in_array('Drakmar', $options['values'])); - } - - /** - * Test that an option value can be created and used for 'tag_used_for'. - * - * Wmf sets tags against contributions & needs to add a used_for for that. - * - * Here we test against participants since that should NOT be in the DB. - * - * (am unsure whether it would be better if the install just used the - * equivalent functions in the .module file or there was a reason not to). - */ - public function testUsedForTag() { - wmf_civicrm_create_option_values_detailed('tag_used_for', array( - 'Participants' => array('value' => 'civicrm_participant'), - )); - $options = civicrm_api3('Tag', 'getoptions', array('field' => 'used_for')); - $this->assertArrayHasKey('civicrm_contact', $options['values']); - $this->assertArrayHasKey('civicrm_participant', $options['values']); - } - -} diff --git a/sites/all/modules/wmf_civicrm/tests/phpunit/RefundTest.php b/sites/all/modules/wmf_civicrm/tests/phpunit/RefundTest.php deleted file mode 100644 index 1be0779..0000000 --- a/sites/all/modules/wmf_civicrm/tests/phpunit/RefundTest.php +++ /dev/null @@ -1,262 +0,0 @@ -<<<<<<< HEAD (a20ac4 Merge master into deployment) -======= -<?php - -/** - * @group Pipeline - * @group WmfCivicrm - */ -class RefundTest extends BaseWmfDrupalPhpUnitTestCase { - - /** - * Id of the contribution created in the setup function. - * - * @var int - */ - protected $original_contribution_id; - - public function setUp() { - parent::setUp(); - civicrm_initialize(); - - $results = $this->callAPISuccess( 'contact', 'create', array( - 'contact_type' => 'Individual', - 'first_name' => 'Test', - 'last_name' => 'Es', - 'debug' => 1, - ) ); - $this->contact_id = $results['id']; - - $this->original_currency = 'EUR'; - $this->original_amount = '1.23'; - $this->gateway_txn_id = mt_rand(); - $time = time(); - $this->trxn_id = "TEST_GATEWAY {$this->gateway_txn_id} {$time}"; - - $this->setExchangeRates( $time, array( 'USD' => 1, 'EUR' => 0.5 ) ); - - $results = civicrm_api3( 'contribution', 'create', array( - 'contact_id' => $this->contact_id, - 'financial_type_id' => 'Cash', - 'total_amount' => $this->original_amount, - 'contribution_source' => $this->original_currency . ' ' . $this->original_amount, - 'receive_date' => wmf_common_date_unix_to_civicrm( $time ), - 'trxn_id' => $this->trxn_id, - ) ); - $this->original_contribution_id = $results['id']; - - $this->refund_contribution_id = null; - } - - public function tearDown() { - civicrm_api3('contribution', 'delete', array( - 'id' => $this->original_contribution_id, - )); - - if ($this->refund_contribution_id && $this->refund_contribution_id != $this->original_contribution_id) { - civicrm_api3('contribution', 'delete', array( - 'id' => $this->refund_contribution_id, - )); - } - - civicrm_api3( 'contact', 'delete', array( - 'id' => $this->contact_id, - ) ); - - parent::tearDown(); - } - - /** - * Check chargeback status exists. - */ - public function testStatuses() { - $options = $this->callAPISuccess('Contribution', 'getoptions', array('field' => 'contribution_status_id')); - $this->assertTrue(in_array('Chargeback', $options['values'])); - } - - /** - * Covers wmf_civicrm_mark_refund. - */ - public function testMarkRefund() { - wmf_civicrm_mark_refund( $this->original_contribution_id, 'refund', false, '2015-09-09', 'my_special_ref'); - - $contribution = civicrm_api3( 'contribution', 'getsingle', array( - 'id' => $this->original_contribution_id, - ) ); - - $this->assertEquals( 'Refunded', $contribution['contribution_status'], - 'Refunded contribution has correct status' ); - - $financialTransactions = civicrm_api3('EntityFinancialTrxn', 'get', array( - 'entity_id' => $this->original_contribution_id, - 'entity_table' => 'civicrm_contribution', - 'api.financial_trxn.get' => 1, - 'sequential' => TRUE, - )); - $this->assertEquals(2, $financialTransactions['count']); - $transaction1 = $financialTransactions['values']['0']['api.financial_trxn.get']['values'][0]; - $transaction2 = $financialTransactions['values']['1']['api.financial_trxn.get']['values'][0]; - - $this->assertEquals($transaction1['trxn_id'], $this->trxn_id); - $this->assertEquals(strtotime($transaction2['trxn_date']), strtotime('2015-09-09')); - $this->assertEquals($transaction2['trxn_id'], 'my_special_ref'); - } - - /** - * Check that marking a contribution as refunded updates custom data appropriately. - */ - public function testMarkRefundCheckCustomData() { - civicrm_api3('contribution', 'create', array( - 'contact_id' => $this->contact_id, - 'financial_type_id' => 'Cash', - 'total_amount' => 50, - 'contribution_source' => 'USD 50', - 'receive_date' => '2014-11-01', - )); - // Create an additional negative contribution. This is how they were prior to Feb 2016. - // We want to check it is ignored for the purpose of determining the most recent donation - // although it should contribute to the lifetime total. - civicrm_api3('contribution', 'create', array( - 'contact_id' => $this->contact_id, - 'financial_type_id' => 'Cash', - 'total_amount' => -10, - 'contribution_source' => 'USD -10', - 'receive_date' => '2015-12-01', - )); - wmf_civicrm_mark_refund( $this->original_contribution_id, 'refund', false, '2015-09-09', 'my_special_ref'); - $contact = civicrm_api3('Contact', 'getsingle', array( - 'id' => $this->contact_id, - 'return' => array( - wmf_civicrm_get_custom_field_name('lifetime_usd_total'), - wmf_civicrm_get_custom_field_name('last_donation_date'), - wmf_civicrm_get_custom_field_name('last_donation_amount'), - wmf_civicrm_get_custom_field_name('last_donation_usd'), - wmf_civicrm_get_custom_field_name('is_2014_donor'), - wmf_civicrm_get_custom_field_name('is_' . date('Y') . '_donor'), - wmf_civicrm_get_custom_field_name('is_2015_donor'), - ), - )); - $this->assertEquals(40.00, $contact[wmf_civicrm_get_custom_field_name('lifetime_usd_total')]); - $this->assertEquals(50.00, $contact[wmf_civicrm_get_custom_field_name('last_donation_usd')]); - $this->assertEquals(50, $contact[wmf_civicrm_get_custom_field_name('last_donation_amount')]); - $this->assertEquals('2014-11-01 00:00:00', $contact[wmf_civicrm_get_custom_field_name('last_donation_date')]); - $this->assertEquals(TRUE, $contact[wmf_civicrm_get_custom_field_name('is_2014_donor')]); - $this->assertEquals(0, $contact[wmf_civicrm_get_custom_field_name('is_' . date('Y') . '_donor')]); - $this->assertEquals(0, $contact[wmf_civicrm_get_custom_field_name('is_2015_donor')]); - } - - - /** - * Make a refund with type set to "chargeback" - */ - public function testMarkRefundWithType() { - $this->refund_contribution_id = wmf_civicrm_mark_refund( $this->original_contribution_id, 'chargeback' ); - - $contribution = civicrm_api3('contribution', 'getsingle', array( - 'id' => $this->original_contribution_id, - )); - - $this->assertEquals( 'Chargeback', $contribution['contribution_status'], - 'Refund contribution has correct type' ); - } - - /** - * Make a refund for less than the original amount - */ - public function testMakeLesserRefund() { - $lesser_amount = round( $this->original_amount - 0.25, 2 ); - wmf_civicrm_mark_refund( - $this->original_contribution_id, - 'chargeback', - true, null, null, - $this->original_currency, $lesser_amount - ); - - - $this->refund_contribution_id = CRM_Core_DAO::singleValueQuery(" - SELECT entity_id FROM wmf_contribution_extra - WHERE - parent_contribution_id = %1", - array(1 => array($this->original_contribution_id, 'Integer')) - ); - - $refund_contribution = civicrm_api3('Contribution', 'getsingle', array( - 'id' => $this->refund_contribution_id, - )); - - $this->assertEquals( - "{$this->original_currency} 0.25", - $refund_contribution['contribution_source'], - 'Refund contribution has correct lesser amount' - ); - } - - /** - * Make a refund in the wrong currency - * - * @expectedException WmfException - */ - public function testMakeWrongCurrencyRefund() { - $wrong_currency = 'GBP'; - $this->assertNotEquals( $this->original_currency, $wrong_currency ); - wmf_civicrm_mark_refund( - $this->original_contribution_id, 'refund', - true, null, null, - $wrong_currency, $this->original_amount - ); - } - - /** - * Make a refund for too much - * - * @expectedException WmfException - */ - public function testMakeScammerRefund() { - wmf_civicrm_mark_refund( - $this->original_contribution_id, 'refund', - true, null, null, - $this->original_currency, $this->original_amount + 100.00 - ); - } - - /** - * Make a lesser refund in the wrong currency - */ - public function testLesserWrongCurrencyRefund() { - $strtime = '04/03/2000'; - $dbtime = '2000-04-03'; - $epochtime = wmf_common_date_parse_string( $dbtime ); - $this->setExchangeRates( $epochtime, array('COP' => .01 ) ); - - $result = $this->callAPISuccess('contribution', 'create', array( - 'contact_id' => $this->contact_id, - 'financial_type_id' => 'Cash', - 'total_amount' => 200, - 'contribution_source' => 'COP 20000', - 'trxn_id' => "TEST_GATEWAY {$this->gateway_txn_id} " . (time() + 20), - )); - - wmf_civicrm_mark_refund( - $result['id'], - 'refund', - TRUE, - $dbtime, - NULL, - 'COP', - 5000 - ); - - $contributions = $this->callAPISuccess('Contribution', 'get', array( - 'contact_id' => $this->contact_id, - 'sequential' => TRUE - )); - $this->assertEquals(3, $contributions['count'], print_r($contributions, TRUE)); - $this->assertEquals(200, $contributions['values'][1]['total_amount']); - $this->assertEquals('USD', $contributions['values'][2]['currency']); - // Exchange rates might move a bit but hopefully it stays less than the original amount. - $this->assertEquals($contributions['values'][2]['total_amount'], 150); - $this->assertEquals('COP 15000', $contributions['values'][2]['contribution_source']); - } - -} ->>>>>>> BRANCH (c33e35 Whitespace + readability) -- To view, visit https://gerrit.wikimedia.org/r/283003 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idf27e6c6731fd60d5b5aba52441f992f1ab267b3 Gerrit-PatchSet: 1 Gerrit-Project: wikimedia/fundraising/crm Gerrit-Branch: deployment Gerrit-Owner: Awight <awi...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits