3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
6 | Use of this source code is governed by the AGPL license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
9 +--------------------------------------------------------------------+
12 use Civi\Api4\Contribution
;
13 use Civi\Api4\ContributionRecur
;
16 * Class CRM_Contribute_Page_AjaxTest
19 class CRM_Contribute_Page_TabTest
extends CiviUnitTestCase
{
22 * Clean up after test.
24 * @throws \CRM_Core_Exception
26 public function tearDown(): void
{
27 $this->quickCleanUpFinancialEntities();
32 * Test links render correctly for manual processor.
34 * @throws \API_Exception
35 * @throws \CiviCRM_API3_Exception
37 public function testLinksManual(): void
{
38 [$contactID, $recurID] = $this->setupTemplate();
40 $templateVariable = CRM_Core_Smarty
::singleton()->get_template_vars();
41 $this->assertEquals('Mr. Anthony Anderson II', $templateVariable['displayName']);
42 $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=\"/index.php?q=civicrm/contribute/unsubscribe&reset=1&crid=" . $recurID . "&cid=" . $contactID . "&context=contribution\" class=\"action-item crm-hover-button\" title='Cancel' >Cancel</a></span>",
43 $this->getActionHtml()
48 * Test links render correctly for manual processor.
50 * @throws \API_Exception
51 * @throws \CiviCRM_API3_Exception
53 public function testLinksPaypalStandard(): void
{
54 $this->setupTemplate([
55 'payment_processor_id' => $this->paymentProcessorCreate(['payment_processor_type_id' => 'PayPal_Standard']),
56 'contact_id' => $this->createLoggedInUser(),
58 $expected = '<span><a href="/index.php?q=civicrm/contact/view/contributionrecur&reset=1&id=1&cid=3&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></span><span class=\'btn-slide crm-hover-button\'>more<ul class=\'panel\'><li><a href="/index.php?q=civicrm/contribute/unsubscribe&reset=1&crid=1&cid=3&context=contribution" class="action-item crm-hover-button" title=\'Cancel\' >Cancel</a></li><li><a href="/index.php?q=civicrm/contribute/updatebilling&reset=1&crid=1&cid=3&context=contribution" class="action-item crm-hover-button" title=\'Change Billing Details\' >Change Billing Details</a></li></ul></span>';
59 $this->assertEquals($expected, $this->getActionHtml());
61 $page = new CRM_Contribute_Page_UserDashboard();
63 $expected = '<span><a href="https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_subscr-find&alias=sunil._1183377782_biz_api1.webaccess.co.in" class="action-item crm-hover-button no-popup" title=\'Cancel\' >Cancel</a>'
64 . '<a href="/index.php?q=civicrm/contact/view/contributionrecur&reset=1&id=1&cid=3&context=dashboard" class="action-item crm-hover-button" title=\'View Recurring Payment\' >View</a>'
65 . '</span><span class=\'btn-slide crm-hover-button\'>more<ul class=\'panel\'><li><a href="/index.php?q=civicrm/contribute/updaterecur&reset=1&action=update&crid=1&cid=3&context=dashboard" class="action-item crm-hover-button" title=\'Edit Recurring Payment\' >Edit</a></li><li><a href="/index.php?q=civicrm/contribute/updatebilling&reset=1&crid=1&cid=3&context=dashboard" class="action-item crm-hover-button" title=\'Change Billing Details\' >Change Billing Details</a></li></ul></span>';
68 $this->getDashboardActionHtml()
73 * Set up template for user dashboard.
75 * Create the recurring contribution, contribution and run the dashboard.
77 * @param array $recurParams
80 * @throws \API_Exception
81 * @throws \CiviCRM_API3_Exception
82 * @throws \Civi\API\Exception\UnauthorizedException
84 protected function setupTemplate($recurParams = []): array {
85 $contactID = $recurParams['contact_id'] ??
$this->individualCreate();
86 $recurID = ContributionRecur
::create()->setValues(array_merge([
87 'contact_id' => $contactID,
89 'frequency_interval' => 'week',
90 'start_date' => 'now',
92 'contribution_status_id:name' => 'Pending',
96 Contribution
::create()->setValues([
97 'contribution_id' => '$id',
98 'financial_type_id:name' => 'Donation',
100 'receive_date' => 'now',
101 'contact_id' => $contactID,
103 )->execute()->first()['id'];
104 $page = new CRM_Contribute_Page_Tab();
105 $page->_contactId
= $contactID;
106 $page->_action
= CRM_Core_Action
::VIEW
;
108 return [$contactID, $recurID];
112 * Get the html assigned as actions.
116 protected function getActionHtml(): string {
117 return CRM_Core_Smarty
::singleton()
118 ->get_template_vars()['activeRecurRows'][1]['action'];
122 * Get the html assigned as actions.
126 protected function getDashboardActionHtml(): string {
127 return CRM_Core_Smarty
::singleton()
128 ->get_template_vars()['recurRows'][1]['action'];