Commit | Line | Data |
---|---|---|
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 | 16 | class 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 | } |