various comment fixes
[civicrm-core.git] / tests / phpunit / Civi / API / Subscriber / TransactionSubscriberTest.php
CommitLineData
e29a1b03
TO
1<?php
2namespace Civi\API\Subscriber;
3
4require_once 'CiviTest/CiviUnitTestCase.php';
5
6/**
7 */
8class TransactionSubscriberTest extends \CiviUnitTestCase {
9
7fe37828
EM
10 /**
11 * Get transaction options.
12 *
13 * @return array
14 */
00be9182 15 public function transactionOptions() {
e29a1b03
TO
16 $r = array();
17 // $r[] = array(string $entity, string $action, array $params, bool $isTransactional, bool $isForceRollback, bool $isNested);
18
19 $r[] = array(3, 'Widget', 'get', array(), FALSE, FALSE, FALSE);
20 $r[] = array(3, 'Widget', 'create', array(), TRUE, FALSE, FALSE);
21 $r[] = array(3, 'Widget', 'delete', array(), TRUE, FALSE, FALSE);
22 $r[] = array(3, 'Widget', 'submit', array(), TRUE, FALSE, FALSE);
23
24 $r[] = array(3, 'Widget', 'get', array('is_transactional' => TRUE), TRUE, FALSE, FALSE);
25 $r[] = array(3, 'Widget', 'get', array('is_transactional' => FALSE), FALSE, FALSE, FALSE);
26 $r[] = array(3, 'Widget', 'get', array('is_transactional' => 'nest'), TRUE, FALSE, TRUE);
27
28 $r[] = array(3, 'Widget', 'create', array('is_transactional' => TRUE), TRUE, FALSE, FALSE);
29 $r[] = array(3, 'Widget', 'create', array('is_transactional' => FALSE), FALSE, FALSE, FALSE);
30 $r[] = array(3, 'Widget', 'create', array('is_transactional' => 'nest'), TRUE, FALSE, TRUE);
31
32 $r[] = array(3, 'Widget', 'create', array('options' => array('force_rollback' => TRUE)), TRUE, TRUE, TRUE);
33 $r[] = array(3, 'Widget', 'create', array('options' => array('force_rollback' => FALSE)), TRUE, FALSE, FALSE);
34
92915c55
TO
35 $r[] = array(
36 3,
37 'Widget',
38 'create',
39 array('is_transactional' => TRUE, 'options' => array('force_rollback' => TRUE)),
40 TRUE,
41 TRUE,
79d7553f 42 TRUE,
92915c55
TO
43 );
44 $r[] = array(
45 3,
46 'Widget',
47 'create',
48 array('is_transactional' => TRUE, 'options' => array('force_rollback' => FALSE)),
49 TRUE,
50 FALSE,
79d7553f 51 FALSE,
92915c55
TO
52 );
53 $r[] = array(
54 3,
55 'Widget',
56 'create',
57 array('is_transactional' => FALSE, 'options' => array('force_rollback' => TRUE)),
58 TRUE,
59 TRUE,
79d7553f 60 TRUE,
92915c55
TO
61 );
62 $r[] = array(
63 3,
64 'Widget',
65 'create',
66 array('is_transactional' => FALSE, 'options' => array('force_rollback' => FALSE)),
67 FALSE,
68 FALSE,
79d7553f 69 FALSE,
92915c55 70 );
e29a1b03
TO
71
72 $r[] = array(4, 'Widget', 'get', array(), FALSE, FALSE, FALSE);
73 $r[] = array(4, 'Widget', 'create', array(), TRUE, FALSE, FALSE);
74
75 $r[] = array(4, 'Widget', 'create', array('is_transactional' => TRUE), TRUE, FALSE, FALSE);
76 $r[] = array(4, 'Widget', 'create', array('is_transactional' => FALSE), FALSE, FALSE, FALSE);
77 $r[] = array(4, 'Widget', 'create', array('is_transactional' => 'nest'), TRUE, FALSE, TRUE);
78
79 $r[] = array(4, 'Widget', 'create', array('options' => array('force_rollback' => TRUE)), TRUE, TRUE, TRUE);
80 $r[] = array(4, 'Widget', 'create', array('options' => array('force_rollback' => FALSE)), TRUE, FALSE, FALSE);
81
82 return $r;
83 }
84
85 /**
7fe37828
EM
86 * Ensure that API parameters "is_transactional" and "force_rollback" are parsed correctly.
87 *
e29a1b03 88 * @dataProvider transactionOptions
7fe37828 89 *
1e1fdcf6
EM
90 * @param $version
91 * @param $entity
92 * @param $action
7fe37828
EM
93 * @param array $params
94 * @param bool $isTransactional
95 * @param bool $isForceRollback
96 * @param bool $isNested
97 *
1e1fdcf6 98 * @throws \API_Exception
e29a1b03 99 */
00be9182 100 public function testTransactionOptions($version, $entity, $action, $params, $isTransactional, $isForceRollback, $isNested) {
e29a1b03
TO
101 $txs = new TransactionSubscriber();
102 $apiProvider = NULL;
103
104 $params['version'] = $version;
105 $apiRequest = \Civi\API\Request::create($entity, $action, $params, array());
106
107 $this->assertEquals($isTransactional, $txs->isTransactional($apiProvider, $apiRequest), 'check isTransactional');
108 $this->assertEquals($isForceRollback, $txs->isForceRollback($apiProvider, $apiRequest), 'check isForceRollback');
109 $this->assertEquals($isNested, $txs->isNested($apiProvider, $apiRequest), 'check isNested');
110 }
111
00be9182 112 public function testForceRollback() {
e29a1b03
TO
113 $result = $this->callAPISuccess('contact', 'create', array(
114 'contact_type' => 'Individual',
115 'first_name' => 'Me',
116 'last_name' => 'Myself',
117 'options' => array(
21dfd5f5 118 'force_rollback' => TRUE,
e29a1b03
TO
119 ),
120 ));
121 $this->assertTrue(is_numeric($result['id']));
122 $this->assertDBQuery(0, 'SELECT count(*) FROM civicrm_contact WHERE id = %1', array(
123 1 => array($result['id'], 'Integer'),
124 ));
125 }
96025800 126
e29a1b03 127}