(NFC) (dev/core#878) Simplify copyright header (tests/*)
[civicrm-core.git] / tests / phpunit / CRM / Contact / Page / View / UserDashBoardTest.php
CommitLineData
98867798 1<?php
2/*
3 +--------------------------------------------------------------------+
7d61e75f 4 | Copyright CiviCRM LLC. All rights reserved. |
98867798 5 | |
7d61e75f
TO
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
98867798 9 +--------------------------------------------------------------------+
10 */
11
12/**
13 * Test class for CRM_Contact_Page_View_UserDashBoard
14 *
15 * @package CiviCRM
16 * @group headless
17 */
18class CRM_Contact_Page_View_UserDashBoardTest extends CiviUnitTestCase {
19
20 use CRMTraits_Page_PageTestTrait;
21
22 /**
23 * Contact ID of logged in user.
24 *
25 * @var int
26 */
27 protected $contactID;
28
e6507b1f 29 /**
30 * Contributions created for the test.
31 *
32 * @var array
33 */
34 protected $contributions = [];
35
98867798 36 /**
37 * Prepare for test
38 */
39 public function setUp() {
40 parent::setUp();
41 $this->contactID = $this->createLoggedInUser();
42 $this->listenForPageContent();
43 }
44
d0df87f2 45 /**
46 * Clean up after each test.
47 */
48 public function tearDown() {
49 $this->quickCleanUpFinancialEntities();
50 $this->quickCleanup(['civicrm_uf_match']);
e0001b13 51 CRM_Utils_Hook::singleton()->reset();
e6507b1f 52 CRM_Core_Session::singleton()->reset();
53 CRM_Core_Smarty::singleton()->clearTemplateVars();
54 $this->callAPISuccess('Contact', 'delete', ['id' => $this->contactID]);
d0df87f2 55 }
56
98867798 57 /**
58 * Test the content of the dashboard.
59 */
60 public function testDashboardContentEmptyContact() {
61 $this->runUserDashboard();
62 $expectedStrings = [
63 'You are not currently subscribed to any Groups',
64 'There are no contributions on record for you.',
65 'There are no Pledges for your record.',
66 'You are not registered for any current or upcoming Events.',
67 'There are no memberships on record for you.',
68 'You do not have any active Personal Campaign pages.',
69 ];
70 $this->assertPageContains($expectedStrings);
71 }
72
73 /**
74 * Test the content of the dashboard.
75 */
e6507b1f 76 public function testDashboardContentContributionsWithInvoicingEnabled() {
77 $this->contributions[] = $this->contributionCreate([
78 'contact_id' => $this->contactID,
79 'receive_date' => '2018-11-21',
80 'receipt_date' => '2018-11-22',
81 ]);
82 $this->contributions[] = $this->contributionCreate([
83 'contact_id' => $this->contactID,
3c73a132
AH
84 'receive_date' => '2018-11-22',
85 'receipt_date' => '2018-11-23',
e6507b1f 86 'trxn_id' => '',
87 'invoice_id' => '',
88 ]);
10f949e6 89 $this->contributions[] = $this->contributionCreate([
90 'contact_id' => $this->contactID,
91 'receive_date' => '2018-11-24',
92 'receipt_date' => '2018-11-24',
93 'trxn_id' => '',
94 'invoice_id' => '',
95 'contribution_status_id' => 'Pending',
96 ]);
e6507b1f 97 $recur = $this->callAPISuccess('ContributionRecur', 'create', [
98 'contact_id' => $this->contactID,
99 'frequency_interval' => 1,
100 'amount' => 5,
101 ]);
102 $this->contributions[] = $this->contributionCreate([
103 'contact_id' => $this->contactID,
3c73a132 104 'receive_date' => '2018-11-20',
e6507b1f 105 'amount_level' => 'high',
106 'contribution_status_id' => 'Cancelled',
107 'invoice_id' => NULL,
108 'trxn_id' => NULL,
109 'contribution_recur_id' => $recur['id'],
110 ]);
111 $this->callAPISuccess('Setting', 'create', ['invoicing' => 1]);
10f949e6 112 $this->callAPISuccess('Setting', 'create', ['default_invoice_page' => $this->contributionPageCreate()['id']]);
98867798 113 $this->runUserDashboard();
114 $expectedStrings = [
115 'Your Contribution(s)',
e6507b1f 116 '<table class="selector"><tr class="columnheader"><th>Total Amount</th><th>Financial Type</th><th>Received date</th><th>Receipt Sent</th><th>Status</th><th></th>',
117 '<td>Completed</td><td><a class="button no-popup nowrap"href="/index.php?q=civicrm/contribute/invoice&amp;reset=1&amp;id=1&amp;cid=' . $this->contactID . '"><i class="crm-i fa-print"></i><span>Print Invoice</span></a></td></tr><tr id=\'rowid2\'',
10f949e6 118 'Pay Now',
98867798 119 ];
e6507b1f 120
98867798 121 $this->assertPageContains($expectedStrings);
3c73a132 122 $this->assertSmartyVariableArrayIncludes('contribute_rows', 1, [
e6507b1f 123 'contact_id' => $this->contactID,
124 'contribution_id' => '1',
125 'total_amount' => '100.00',
126 'financial_type' => 'Donation',
127 'contribution_source' => 'SSF',
128 'receive_date' => '2018-11-21 00:00:00',
129 'contribution_status' => 'Completed',
130 'currency' => 'USD',
8bfce657 131 'receipt_date' => '2018-11-22 00:00:00',
e6507b1f 132 ]);
133
98867798 134 }
135
136 /**
137 * Test the content of the dashboard.
138 */
e6507b1f 139 public function testDashboardContentContributions() {
98867798 140 $this->contributionCreate(['contact_id' => $this->contactID]);
e6507b1f 141 $this->contributions[] = civicrm_api3('Contribution', 'get', [
142 'contact_id' => $this->contactID,
143 'options' => ['limit' => 12, 'sort' => 'receive_date DESC'],
144 'sequential' => 1,
145 ])['values'];
98867798 146 $this->runUserDashboard();
147 $expectedStrings = [
148 'Your Contribution(s)',
e6507b1f 149 '<table class="selector"><tr class="columnheader"><th>Total Amount</th><th>Financial Type</th><th>Received date</th><th>Receipt Sent</th><th>Status</th>',
150 '<td>$ 100.00 </td><td>Donation</td>',
151 '<td>Completed</td>',
98867798 152 ];
153 $this->assertPageContains($expectedStrings);
98867798 154 }
155
156 /**
157 * Run the user dashboard.
158 */
159 protected function runUserDashboard() {
e6507b1f 160 $_REQUEST = ['reset' => 1, 'id' => $this->contactID];
98867798 161 $dashboard = new CRM_Contact_Page_View_UserDashBoard();
e6507b1f 162 $dashboard->_contactId = $this->contactID;
98867798 163 $dashboard->run();
e6507b1f 164 $_REQUEST = [];
98867798 165 }
166
167}