Suppress legacy warnings by default in propertyBag to allow transition to propertyBag...
authorMatthew Wire <mjw@mjwconsult.co.uk>
Sun, 11 Apr 2021 21:56:34 +0000 (22:56 +0100)
committerMatthew Wire <mjw@mjwconsult.co.uk>
Mon, 12 Apr 2021 19:13:34 +0000 (20:13 +0100)
Civi/Payment/PropertyBag.php
tests/phpunit/Civi/Payment/PropertyBagTest.php

index daf716c7c05f034cb3b90733a12bc377ce1514ad..1af17c123a6a96905e638100b0c84ea73095b2e1 100644 (file)
@@ -77,8 +77,29 @@ class PropertyBag implements \ArrayAccess {
    * @var bool
    * Temporary, internal variable to help ease transition to PropertyBag.
    * Used by cast() to suppress legacy warnings.
+   * For paymentprocessors that have not converted to propertyBag we need to support "legacy" properties - eg. "is_recur"
+   *   without warnings. Setting this allows us to pass a propertyBag into doPayment() and expect it to "work" with
+   *   existing payment processors.
    */
-  protected $suppressLegacyWarnings = FALSE;
+  protected $suppressLegacyWarnings = TRUE;
+
+  /**
+   * Get the value of the suppressLegacyWarnings parameter
+   * @return bool
+   */
+  public function getSuppressLegacyWarnings() {
+    return $this->suppressLegacyWarnings;
+  }
+
+  /**
+   * Set the suppressLegacyWarnings parameter - useful for unit tests.
+   * Eg. you could set to FALSE for unit tests on a paymentprocessor to capture use of legacy keys in that processor
+   * code.
+   * @param bool $suppressLegacyWarnings
+   */
+  public function setSuppressLegacyWarnings(bool $suppressLegacyWarnings) {
+    $this->suppressLegacyWarnings = $suppressLegacyWarnings;
+  }
 
   /**
    * Get the property bag.
index b127f10ee4f3a33ee4afb0c6b16eaeac43ed252c..892fec225432dce08d4dd9a1ea78d7997cbe3807 100644 (file)
@@ -109,6 +109,7 @@ class PropertyBagTest extends \PHPUnit\Framework\TestCase implements HeadlessInt
    */
   public function testSetContactIDLegacyWay() {
     $propertyBag = new PropertyBag();
+    $propertyBag->setSuppressLegacyWarnings(FALSE);
 
     // To prevent E_USER_DEPRECATED errors during phpunit tests we take a copy
     // of the existing error_reporting.
@@ -191,6 +192,7 @@ class PropertyBagTest extends \PHPUnit\Framework\TestCase implements HeadlessInt
 
     // Test we can do this with array, although we should get a warning.
     $propertyBag = new PropertyBag();
+    $propertyBag->setSuppressLegacyWarnings(FALSE);
 
     // Set by array access should cause deprecated error.
     try {