dev/core#2568 Enotice fix + test
[civicrm-core.git] / tests / phpunit / CRM / Contribute / Form / Task / StatusTest.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
5 | |
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 +--------------------------------------------------------------------+
10 */
11
12 /**
13 * Class CRM_Contribute_Form_Task_StatusTest
14 */
15 class CRM_Contribute_Form_Task_StatusTest extends CiviUnitTestCase {
16
17 protected $_individualId;
18
19 /**
20 * Clean up after each test.
21 */
22 public function tearDown(): void {
23 $this->quickCleanUpFinancialEntities();
24 CRM_Utils_Hook::singleton()->reset();
25 }
26
27 /**
28 * Test update pending contribution with sending a confirmation mail.
29 *
30 * @throws \CiviCRM_API3_Exception
31 * @throws \CRM_Core_Exception
32 * @throws \Exception
33 */
34 public function testUpdatePendingContributionWithSendingEmail(): void {
35 $this->_individualId = $this->individualCreate();
36 $form = new CRM_Contribute_Form_Task_Status();
37
38 $mut = new CiviMailUtils($this, TRUE);
39 $mut->clearMessages();
40
41 // create a pending contribution
42 $contributionParams = [
43 'contact_id' => $this->_individualId,
44 'total_amount' => 100,
45 'financial_type_id' => 'Donation',
46 'contribution_status_id' => 2,
47 ];
48 $contribution = $this->callAPISuccess('Contribution', 'create', $contributionParams);
49 $contributionId = $contribution['id'];
50 $form->setContributionIds([$contributionId]);
51
52 $form->buildQuickForm();
53
54 $params = [
55 "is_email_receipt" => '1',
56 "contribution_status_id" => 1,
57 "trxn_id_{$contributionId}" => NULL,
58 "check_number_{$contributionId}" => NULL,
59 "fee_amount_{$contributionId}" => 0,
60 "trxn_date_{$contributionId}" => date('m/d/Y'),
61 "payment_instrument_id_{$contributionId}" => 4,
62 ];
63
64 CRM_Contribute_Form_Task_Status::processForm($form, $params);
65
66 $contribution = $this->callAPISuccess('Contribution', 'get', ['id' => $contributionId]);
67 $updatedContribution = $contribution['values'][1];
68
69 $this->assertEquals('', $updatedContribution['contribution_source']);
70 $this->assertEquals(date("Y-m-d"), date("Y-m-d", strtotime($updatedContribution['receive_date'])));
71 $this->assertNotEquals("00:00:00", date("H:i:s", strtotime($updatedContribution['receive_date'])));
72 $this->assertEquals('Completed', $updatedContribution['contribution_status']);
73
74 $msg = $mut->getMostRecentEmail();
75 $this->assertNotEmpty($msg);
76 $mut->stop();
77 }
78
79 /**
80 * Test update pending contribution without sending a confirmation mail.
81 */
82 public function testUpdatePendingContributionWithoutSendingEmail() {
83 $this->_individualId = $this->individualCreate();
84 $form = new CRM_Contribute_Form_Task_Status();
85
86 $mut = new CiviMailUtils($this, TRUE);
87 $mut->clearMessages();
88
89 // create a pending contribution
90 $contributionParams = [
91 'contact_id' => $this->_individualId,
92 'total_amount' => 100,
93 'financial_type_id' => 'Donation',
94 'contribution_status_id' => 2,
95 ];
96 $contribution = $this->callAPISuccess('Contribution', 'create', $contributionParams);
97 $contributionId = $contribution['id'];
98 $form->setContributionIds([$contributionId]);
99
100 $form->buildQuickForm();
101
102 $params = [
103 "is_email_receipt" => '0',
104 "contribution_status_id" => 1,
105 "trxn_id_{$contributionId}" => NULL,
106 "check_number_{$contributionId}" => NULL,
107 "fee_amount_{$contributionId}" => 0,
108 "trxn_date_{$contributionId}" => date('m/d/Y'),
109 "payment_instrument_id_{$contributionId}" => 4,
110 ];
111
112 CRM_Contribute_Form_Task_Status::processForm($form, $params);
113
114 $contribution = $this->callAPISuccess('Contribution', 'get', ['id' => $contributionId]);
115 $updatedContribution = $contribution['values'][1];
116
117 $this->assertEquals('', $updatedContribution['contribution_source']);
118 $this->assertEquals(date("Y-m-d"), date("Y-m-d", strtotime($updatedContribution['receive_date'])));
119 $this->assertNotEquals("00:00:00", date("H:i:s", strtotime($updatedContribution['receive_date'])));
120 $this->assertEquals('Completed', $updatedContribution['contribution_status']);
121
122 $mut->assertMailLogEmpty();
123 $mut->stop();
124 }
125
126 }