CRM-16788 add test to check recurring created
authorEileen McNaughton <eileen@fuzion.co.nz>
Sun, 5 Jul 2015 11:09:45 +0000 (23:09 +1200)
committerEileen McNaughton <eileen@fuzion.co.nz>
Sun, 5 Jul 2015 11:09:45 +0000 (23:09 +1200)
(This does appear to be working - but on renewal form not so much, this form is adding the test to prepare to fix the other form)

CRM/Contribute/Form/AbstractEditPayment.php
CRM/Core/PseudoConstant.php
CRM/Member/Form/Membership.php
tests/phpunit/CRM/Member/Form/MembershipTest.php
tests/phpunit/CiviTest/CiviUnitTestCase.php

index f02446abe752046d440de2f0f469ab2fd861f2af..d8a99b1925a3aa6b90d151c8c438d868bf28dab9 100644 (file)
@@ -52,7 +52,7 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task {
 
   public $_bltID;
 
-  public $_fields;
+  public $_fields = array();
 
   /**
    * @var array current payment processor including a copy of the object in 'object' key
@@ -624,7 +624,6 @@ LEFT JOIN  civicrm_contribution on (civicrm_contribution.contact_id = civicrm_co
 
         $this->assignBillingType();
 
-        $this->_fields = array();
         CRM_Core_Payment_Form::setPaymentFieldsByProcessor($this, $this->_paymentProcessor, FALSE, TRUE);
       }
     }
index c042f436c22f9ed840fdcb9d61285e080ab8d31b..352e9e89e465bb99c6bf8540c4deff4ce0c44752 100644 (file)
@@ -756,7 +756,7 @@ class CRM_Core_PseudoConstant {
    * @return array
    *   array reference of all State/Province abbreviations.
    */
-  public static function &stateProvinceAbbreviation($id = FALSE, $limit = TRUE) {
+  public static function stateProvinceAbbreviation($id = FALSE, $limit = TRUE) {
     if ($id > 1) {
       $query = "
 SELECT abbreviation
index 77758ddd7b0140e33a9ad0c41febe0f84d0a4fe5..17833e6f068398bebe1284ea8d171231350cceaf 100644 (file)
@@ -1296,7 +1296,6 @@ class CRM_Member_Form_Membership extends CRM_Member_Form {
         }
 
         $membershipTypeValues[$memType][$d] = CRM_Utils_Date::processDate($date);
-        //$params[$d] = CRM_Utils_Date::processDate( $date );
       }
     }
 
@@ -1464,11 +1463,12 @@ class CRM_Member_Form_Membership extends CRM_Member_Form {
       }
 
       // add all the additional payment params we need
-      $this->_params["state_province-{$this->_bltID}"] = $this->_params["billing_state_province-{$this->_bltID}"] = CRM_Core_PseudoConstant::stateProvinceAbbreviation($this->_params["billing_state_province_id-{$this->_bltID}"]);
-      $this->_params["country-{$this->_bltID}"] = $this->_params["billing_country-{$this->_bltID}"] = CRM_Core_PseudoConstant::countryIsoCode($this->_params["billing_country_id-{$this->_bltID}"]);
+      $this->_params["state_province-{$this->_bltID}"] = $this->_params["billing_state_province-{$this->_bltID}"] =
+        CRM_Core_PseudoConstant::stateProvinceAbbreviation($formValues["billing_state_province_id-{$this->_bltID}"]);
+      $this->_params["country-{$this->_bltID}"] = $this->_params["billing_country-{$this->_bltID}"] = CRM_Core_PseudoConstant::countryIsoCode($formValues["billing_country_id-{$this->_bltID}"]);
 
-      $this->_params['year'] = CRM_Core_Payment_Form::getCreditCardExpirationYear($this->_params);
-      $this->_params['month'] = CRM_Core_Payment_Form::getCreditCardExpirationMonth($this->_params);
+      $this->_params['year'] = CRM_Core_Payment_Form::getCreditCardExpirationYear($formValues);
+      $this->_params['month'] = CRM_Core_Payment_Form::getCreditCardExpirationMonth($formValues);
       $this->_params['ip_address'] = CRM_Utils_System::ipAddress();
       $this->_params['amount'] = $params['total_amount'];
       $this->_params['currencyID'] = $config->defaultCurrency;
index 91f875101c5d7e4fea8ac5560e536700424473ce..3d89a74e474f338c59ba88d70468c18cdf13d08d 100644 (file)
@@ -91,7 +91,8 @@ class CRM_Member_Form_MembershipTest extends CiviUnitTestCase {
     parent::setUp();
 
     $this->_individualId = $this->individualCreate();
-    $this->_paymentProcessorID = $this->processorCreate();
+    $processor = $this->processorCreate();
+    $this->_paymentProcessorID = $processor->id;
     // Insert test data.
     $op = new PHPUnit_Extensions_Database_Operation_Insert();
     $op->execute($this->_dbconn,
@@ -114,6 +115,7 @@ class CRM_Member_Form_MembershipTest extends CiviUnitTestCase {
         'civicrm_relationship',
         'civicrm_membership_type',
         'civicrm_membership',
+        'civicrm_uf_match',
       )
     );
     $this->callAPISuccess('contact', 'delete', array('id' => 17, 'skip_undelete' => TRUE));
@@ -457,4 +459,87 @@ class CRM_Member_Form_MembershipTest extends CiviUnitTestCase {
     $this->callAPISuccessGetCount('Membership', array('contact_id' => $this->_individualId), 1);
   }
 
+  /**
+   * Test the submit function of the membership form.
+   */
+  public function testSubmitRecur() {
+    $form = $this->getForm();
+
+    $this->callAPISuccess('MembershipType', 'create', array(
+      'id' => 25,
+      'duration_unit' => 'month',
+      'duration_interval' => 1,
+      'auto_renew' => TRUE,
+    ));
+    $form->preProcess();
+    $this->createLoggedInUser();
+    $params = array(
+      'cid' => $this->_individualId,
+      'price_set_id' => 0,
+      'join_date' => date('m/d/Y', time()),
+      'start_date' => '',
+      'end_date' => '',
+      'campaign_id' => '',
+      // This format reflects the 1 being the organisation & the 25 being the type.
+      'membership_type_id' => array(1, 25),
+      'auto_renew' => '1',
+      'is_recur' => 1,
+      'max_related' => 0,
+      'num_terms' => '1',
+      'source' => '',
+      'total_amount' => '77.00',
+      'financial_type_id' => '2', //Member dues, see data.xml
+      'soft_credit_type_id' => 11,
+      'soft_credit_contact_id' => '',
+      'from_email_address' => '"Demonstrators Anonymous" <info@example.org>',
+      'receipt_text' => 'Thank you text',
+      'payment_processor_id' => $this->_paymentProcessorID,
+      'credit_card_number' => '4111111111111111',
+      'cvv2' => '123',
+      'credit_card_exp_date' => array(
+        'M' => '9',
+        'Y' => '2019', // TODO: Future proof
+      ),
+      'credit_card_type' => 'Visa',
+      'billing_first_name' => 'Test',
+      'billing_middlename' => 'Last',
+      'billing_street_address-5' => '10 Test St',
+      'billing_city-5' => 'Test',
+      'billing_state_province_id-5' => '1003',
+      'billing_postal_code-5' => '90210',
+      'billing_country_id-5' => '1228',
+    );
+    $form->_mode = 'test';
+
+    $form->submit($params);
+    $membership = $this->callAPISuccessGetSingle('Membership', array('contact_id' => $this->_individualId));
+    $this->callAPISuccessGetCount('ContributionRecur', array('contact_id' => $this->_individualId), 1);
+
+    $contribution = $this->callAPISuccess('Contribution', 'get', array(
+      'contact_id' => $this->_individualId,
+      'is_test' => TRUE,
+    ));
+/* Not currently passing.
+    $this->callAPISuccessGetCount('LineItem', array(
+      'entity_id' => $membership['id'],
+      'entity_table' => 'civicrm_membership',
+      'contribution_id' => $contribution['id'],
+    ), 1);
+*/
+  }
+
+  /**
+   * Get a membership form object.
+   *
+   * We need to instantiate the form to run preprocess, which means we have to trick it about the request method.
+   *
+   * @return \CRM_Member_Form_Membership
+   */
+  protected function getForm() {
+    $form = new CRM_Member_Form_Membership();
+    $_SERVER['REQUEST_METHOD'] = 'GET';
+    $form->controller = new CRM_Core_Controller();
+    $form->_bltID = 5;
+    return $form;
+  }
 }
index 1b2c24f0bb0deaf38a32320a9c956c2e8fac2ba2..adde913aca06c5266462604fd65625b20480d0cd 100755 (executable)
@@ -1482,6 +1482,7 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase {
       'name' => 'Dummy',
       'payment_processor_type_id' => 10,
       'financial_account_id' => 12,
+      'is_test' => TRUE,
       'is_active' => 1,
       'user_name' => '',
       'url_site' => 'http://dummy.com',