[REF] Ensure that test payment processors are captured by the test and in the upgrade...
authorSeamus Lee <seamuslee001@gmail.com>
Fri, 7 Jul 2023 00:21:48 +0000 (10:21 +1000)
committerSeamus Lee <seamuslee001@gmail.com>
Fri, 7 Jul 2023 00:21:48 +0000 (10:21 +1000)
CRM/Upgrade/Incremental/php/FiveSixtyFour.php
tests/phpunit/CRM/Upgrade/Incremental/php/FiveSixtyFourTest.php

index 1a5a5012847101407bc36a5e7764f18d946761c1..93bbe50474939492efe39c5c1bbf4a9e21e300f1 100644 (file)
@@ -65,10 +65,10 @@ CHANGE `cancel_URL` `cancel_url` varchar(255) DEFAULT NULL COMMENT 'Redirect to
    * Fix any double json encoding in Payment Processor accepted_credit_cards field
    */
   public static function fixDoubleEscapingPaymentProcessorCreditCards() {
-    $paymentProcessors = PaymentProcessor::get(FALSE)->execute();
+    $paymentProcessors = PaymentProcessor::get(FALSE)->addWhere('is_test', 'IS NOT NULL')->addWhere('domain_id', 'IS NOT NULL')->execute();
     foreach ($paymentProcessors as $paymentProcessor) {
-      if (is_numeric(array_keys($paymentProcessor['accepted_credit_cards'])[0])) {
-        PaymentProcessor::update(FALSE)->addValue('accepted_credit_cards', json_decode($paymentProcessor['accepted_credit_cards'], TRUE))->addWhere('id', '=', $paymentProcessor['id'])->execute();
+      if (is_array($paymentProcessor['accepted_credit_cards']) && is_numeric(array_keys($paymentProcessor['accepted_credit_cards'])[0])) {
+        PaymentProcessor::update(FALSE)->addValue('accepted_credit_cards', json_decode($paymentProcessor['accepted_credit_cards'][0], TRUE))->addWhere('id', '=', $paymentProcessor['id'])->execute();
       }
     }
     return TRUE;
index 2868137c3048bc3fa8011fa4fd57d005d7711fb4..26b6a46cc9170b4c40963017883ec074b9edf590 100644 (file)
@@ -22,10 +22,14 @@ class CRM_Upgrade_Incremental_php_FiveSixtyFourTest extends CiviUnitTestCase {
     ];
     PaymentProcessor::update()->addValue('accepted_credit_cards', $creditCards)->addWhere('id', '=', $this->ids['PaymentProcessor']['anet'])->execute();
     PaymentProcessor::update()->addValue('accepted_credit_cards', json_encode($creditCards))->addWhere('id', '=', $this->ids['PaymentProcessor']['authorize_net'])->execute();
+    $dummyPaymentProcessor = $this->processorCreate();
+    PaymentProcessor::update()->addValue('accepted_credit_cards', NULL)->addWhere('id', '=', $dummyPaymentProcessor)->execute();
     CRM_Upgrade_Incremental_php_FiveSixtyFour::fixDoubleEscapingPaymentProcessorCreditCards();
-    $paymentProcessors = PaymentProcessor::get()->execute();
+    $paymentProcessors = PaymentProcessor::get()->addWhere('id', 'IN', [$this->ids['PaymentProcessor']['anet'], $this->ids['PaymentProcessor']['authorize_net'], $dummyPaymentProcessor])->execute();
     foreach ($paymentProcessors as $paymentProcessor) {
-      $this->assertEquals($creditCards, $paymentProcessor['accepted_credit_cards']);
+      if (!empty($paymentProcessor['accepted_credit_cards'])) {
+        $this->assertEquals($creditCards, $paymentProcessor['accepted_credit_cards']);
+      }
     }
   }