*
* @param int $id
*
- * @return \CRM_Core_Payment|NULL
+ * @return \CRM_Core_Payment
*
- * @throws \CiviCRM_API3_Exception
+ * @throws \CiviCRM_API3_Exception|\CRM_Core_Exception
*/
public function getById($id) {
- if ($id == 0) {
+ if (isset($this->cache[$id])) {
+ return $this->cache[$id];
+ }
+ if ((int) $id === 0) {
return new \CRM_Core_Payment_Manual();
}
$processor = civicrm_api3('payment_processor', 'getsingle', ['id' => $id, 'is_test' => NULL]);
- return self::getByProcessor($processor);
+ return $this->getByProcessor($processor);
}
/**
--- /dev/null
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved. |
+ | |
+ | Use of this source code is governed by the AGPL license with some |
+ | permitted exceptions and without any warranty. For full license |
+ | and copyright information, see https://civicrm.org/licensing |
+ +--------------------------------------------------------------------+
+ */
+
+use Civi\Api4\Contribution;
+use Civi\Api4\ContributionRecur;
+
+/**
+ * Class CRM_Contribute_Page_AjaxTest
+ * @group headless
+ */
+class CRM_Contribute_Page_TabTest extends CiviUnitTestCase {
+
+ /**
+ * Test links render correctly for manual processor.
+ *
+ * @throws \API_Exception
+ * @throws \CiviCRM_API3_Exception
+ */
+ public function testLinks() {
+ $contactID = $this->individualCreate();
+ $recurID = ContributionRecur::create()->setValues([
+ 'contact_id' => $contactID,
+ 'amount' => 10,
+ 'frequency_interval' => 'week',
+ 'start_date' => 'now',
+ 'is_active' => TRUE,
+ 'contribution_status_id:name' => 'Pending',
+ ])
+ ->addChain(
+ 'contribution',
+ Contribution::create()->setValues([
+ 'contribution_id' => '$id',
+ 'financial_type_id:name' => 'Donation',
+ 'total_amount' => 60,
+ 'receive_date' => 'now',
+ 'contact_id' => $contactID,
+ ])
+ )->execute()->first()['id'];
+ $page = new CRM_Contribute_Page_Tab();
+ $page->_contactId = $contactID;
+ $page->_action = CRM_Core_Action::VIEW;
+ $page->browse();
+
+ $templateVariable = CRM_Core_Smarty::singleton()->get_template_vars();
+ $this->assertEquals('Mr. Anthony Anderson II', $templateVariable['displayName']);
+ $this->assertEquals("<span><a href=\"/index.php?q=civicrm/contact/view/contributionrecur&reset=1&id=" . $recurID . "&cid=" . $contactID . "&context=contribution\" class=\"action-item crm-hover-button\" title='View Recurring Payment' >View</a><a href=\"/index.php?q=civicrm/contribute/updaterecur&reset=1&action=update&crid=1&cid=3&context=contribution\" class=\"action-item crm-hover-button\" title='Edit Recurring Payment' >Edit</a><a href=\"#\" class=\"action-item crm-hover-button crm-enable-disable\" title='Cancel' >Cancel</a></span>",
+ $templateVariable['activeRecurRows'][1]['action']
+ );
+ }
+
+}