From 76b05101509684129f306c1350c4005534f12ad3 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Wed, 5 Nov 2014 14:10:51 +1300 Subject: [PATCH] CRM-15203 test for membership payment record --- .../CRM/Core/Payment/PayPalProIPNTest.php | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/phpunit/CRM/Core/Payment/PayPalProIPNTest.php b/tests/phpunit/CRM/Core/Payment/PayPalProIPNTest.php index 4d494a6f0e..f3df7ac145 100644 --- a/tests/phpunit/CRM/Core/Payment/PayPalProIPNTest.php +++ b/tests/phpunit/CRM/Core/Payment/PayPalProIPNTest.php @@ -160,6 +160,32 @@ class CRM_Core_Payment_PayPalProIPNTest extends CiviUnitTestCase { $this->fail('The Paypal Express IPN should have caused an exception'); } + /** + * test IPN response updates contribution_recur & contribution for first & second contribution + */ + function testIPNPaymentMembershipRecurSuccess() { + $this->setupMembershipRecurringPaymentProcessorTransaction(); + $this->callAPISuccessGetSingle('membership_payment', array()); + $paypalIPN = new CRM_Core_Payment_PayPalProIPN($this->getPaypalProRecurTransaction()); + $paypalIPN->main(); + $contribution = $this->callAPISuccess('contribution', 'getsingle', array('id' => $this->_contributionID)); + $membershipEndDate = $this->callAPISuccessGetValue('membership', array('return' => 'end_date')); + $this->assertEquals(1, $contribution['contribution_status_id']); + $this->assertEquals('8XA571746W2698126', $contribution['trxn_id']); + // source gets set by processor + $this->assertTrue(substr($contribution['contribution_source'], 0, 20) == "Online Contribution:"); + $contributionRecur = $this->callAPISuccess('contribution_recur', 'getsingle', array('id' => $this->_contributionRecurID)); + $this->assertEquals(5, $contributionRecur['contribution_status_id']); + $paypalIPN = new CRM_Core_Payment_PaypalProIPN($this->getPaypalProRecurSubsequentTransaction()); + $paypalIPN->main(); + $this->assertEquals(strtotime('+ 1 year', strtotime($membershipEndDate)), strtotime($this->callAPISuccessGetValue('membership', array('return' => 'end_date')))); + $contribution = $this->callAPISuccess('contribution', 'get', array('contribution_recur_id' => $this->_contributionRecurID, 'sequential' => 1)); + $this->assertEquals(2, $contribution['count']); + $this->assertEquals('secondone', $contribution['values'][1]['trxn_id']); + $this->callAPISuccessGetSingle('line_item', array('entity_id' => $contribution['values'][1]['id'], 'entity_table' => 'civicrm_contribution')); + $this->callAPISuccessGetSingle('membership_payment', array('contribution_id' => $contribution['values'][1]['id'],)); + + } function setupPaymentProcessorTransaction() { $contributionRecur = $this->callAPISuccess('contribution_recur', 'create', array( -- 2.25.1