Merge pull request #16596 from civicrm/5.23
[civicrm-core.git] / tests / phpunit / CRM / Extension / Manager / PaymentTest.php
CommitLineData
6a488035 1<?php
b6708aeb 2/*
3 +--------------------------------------------------------------------+
7d61e75f
TO
4 | Copyright CiviCRM LLC. All rights reserved. |
5 | |
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 |
9 +--------------------------------------------------------------------+
e70a7fc0 10 */
6a488035 11
e9479dcf
EM
12/**
13 * Class CRM_Extension_Manager_PaymentTest
acb109b7 14 * @group headless
e9479dcf 15 */
6a488035 16class CRM_Extension_Manager_PaymentTest extends CiviUnitTestCase {
92915c55 17
00be9182 18 public function setUp() {
6a488035
TO
19 parent::setUp();
20 if (class_exists('test_extension_manager_paymenttest')) {
9099cab3 21 test_extension_manager_paymenttest::$counts = [];
6a488035 22 }
9099cab3 23 $this->system = new CRM_Extension_System([
6a488035
TO
24 'extensionsDir' => '',
25 'extensionsURL' => '',
9099cab3
CW
26 ]);
27 $this->quickCleanup(['civicrm_payment_processor']);
6a488035
TO
28 }
29
00be9182 30 public function tearDown() {
6a488035
TO
31 parent::tearDown();
32 $this->system = NULL;
9099cab3 33 $this->quickCleanup(['civicrm_payment_processor']);
6a488035
TO
34 CRM_Core_DAO::executeQuery('DELETE FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest"');
35 }
36
37 /**
eceb18cc 38 * Install an extension with a valid type name.
6a488035 39 */
00be9182 40 public function testInstallDisableUninstall() {
6a488035
TO
41 $manager = $this->system->getManager();
42 $this->assertDBQuery(0, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest"');
9099cab3 43 $manager->install(['test.extension.manager.paymenttest']);
6a488035
TO
44 $this->assertEquals(1, test_extension_manager_paymenttest::$counts['install']);
45 $this->assertDBQuery(1, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest" AND is_active = 1');
46
9099cab3 47 $manager->disable(['test.extension.manager.paymenttest']);
6a488035
TO
48 $this->assertEquals(1, test_extension_manager_paymenttest::$counts['disable']);
49 $this->assertDBQuery(1, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest"');
50 $this->assertDBQuery(1, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest" AND is_active = 0');
51
9099cab3 52 $manager->uninstall(['test.extension.manager.paymenttest']);
6a488035
TO
53 $this->assertEquals(1, test_extension_manager_paymenttest::$counts['uninstall']);
54 $this->assertDBQuery(0, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest"');
55 }
56
57 /**
eceb18cc 58 * Install an extension with a valid type name.
6a488035 59 */
00be9182 60 public function testInstallDisableEnable() {
6a488035
TO
61 $manager = $this->system->getManager();
62 $this->assertDBQuery(0, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest"');
b6708aeb 63
9099cab3 64 $manager->install(['test.extension.manager.paymenttest']);
6a488035
TO
65 $this->assertEquals(1, test_extension_manager_paymenttest::$counts['install']);
66 $this->assertDBQuery(1, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest" AND is_active = 1');
67
9099cab3 68 $manager->disable(['test.extension.manager.paymenttest']);
6a488035
TO
69 $this->assertEquals(1, test_extension_manager_paymenttest::$counts['disable']);
70 $this->assertDBQuery(1, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest"');
71 $this->assertDBQuery(1, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest" AND is_active = 0');
72
9099cab3 73 $manager->enable(['test.extension.manager.paymenttest']);
6a488035
TO
74 $this->assertEquals(1, test_extension_manager_paymenttest::$counts['enable']);
75 $this->assertDBQuery(1, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest"');
76 $this->assertDBQuery(1, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest" AND is_active = 1');
77 }
92915c55 78
6a488035
TO
79 /**
80 * Install an extension and create a payment processor which uses it.
81 * Attempts to uninstall fail
82 */
00be9182 83 public function testInstall_Add_FailUninstall() {
6a488035
TO
84 $manager = $this->system->getManager();
85 $this->assertDBQuery(0, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest"');
86
9099cab3 87 $manager->install(['test.extension.manager.paymenttest']);
6a488035
TO
88 $this->assertEquals(1, test_extension_manager_paymenttest::$counts['install']);
89 $this->assertDBQuery(1, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest" AND is_active = 1');
90 $payment_processor_type_id = CRM_Core_DAO::singleValueQuery('SELECT id FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest"');
91
9099cab3 92 $ppDAO = CRM_Financial_BAO_PaymentProcessor::create([
6a488035
TO
93 'payment_processor_type_id' => $payment_processor_type_id,
94 'domain_id' => CRM_Core_Config::domainID(),
9099cab3 95 ]);
6a488035 96
9099cab3 97 $manager->disable(['test.extension.manager.paymenttest']);
6a488035
TO
98 $this->assertEquals(1, test_extension_manager_paymenttest::$counts['disable']);
99 $this->assertDBQuery(1, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest"');
100 $this->assertDBQuery(1, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest" AND is_active = 0');
101
102 // first attempt to uninstall -- fail
103 try {
9099cab3 104 $manager->uninstall(['test.extension.manager.paymenttest']);
6a488035 105 $this->fail('Failed to catch expected exception');
0db6c3e1
TO
106 }
107 catch (CRM_Extension_Exception_DependencyException $e) {
6a488035 108 }
6b812400 109 $this->assertEquals(0, test_extension_manager_paymenttest::getCount('uninstall'));
6a488035
TO
110 $this->assertDBQuery(1, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest"');
111
112 $ppDAO->delete();
113
114 // second attempt to uninstall -- ok
9099cab3 115 $manager->uninstall(['test.extension.manager.paymenttest']);
6b812400 116 $this->assertEquals(1, test_extension_manager_paymenttest::getCount('uninstall'));
6a488035
TO
117 $this->assertDBQuery(0, 'SELECT count(*) FROM civicrm_payment_processor_type WHERE class_name = "test.extension.manager.paymenttest"');
118 }
96025800 119
6a488035 120}