INFRA-132 - Trailing commas for multiline arrays
[civicrm-core.git] / tests / phpunit / Civi / API / Subscriber / TransactionSubscriberTest.php
1 <?php
2 namespace Civi\API\Subscriber;
3
4 require_once 'CiviTest/CiviUnitTestCase.php';
5
6 /**
7 */
8 class TransactionSubscriberTest extends \CiviUnitTestCase {
9
10 public function transactionOptions() {
11 $r = array();
12 // $r[] = array(string $entity, string $action, array $params, bool $isTransactional, bool $isForceRollback, bool $isNested);
13
14 $r[] = array(3, 'Widget', 'get', array(), FALSE, FALSE, FALSE);
15 $r[] = array(3, 'Widget', 'create', array(), TRUE, FALSE, FALSE);
16 $r[] = array(3, 'Widget', 'delete', array(), TRUE, FALSE, FALSE);
17 $r[] = array(3, 'Widget', 'submit', array(), TRUE, FALSE, FALSE);
18
19 $r[] = array(3, 'Widget', 'get', array('is_transactional' => TRUE), TRUE, FALSE, FALSE);
20 $r[] = array(3, 'Widget', 'get', array('is_transactional' => FALSE), FALSE, FALSE, FALSE);
21 $r[] = array(3, 'Widget', 'get', array('is_transactional' => 'nest'), TRUE, FALSE, TRUE);
22
23 $r[] = array(3, 'Widget', 'create', array('is_transactional' => TRUE), TRUE, FALSE, FALSE);
24 $r[] = array(3, 'Widget', 'create', array('is_transactional' => FALSE), FALSE, FALSE, FALSE);
25 $r[] = array(3, 'Widget', 'create', array('is_transactional' => 'nest'), TRUE, FALSE, TRUE);
26
27 $r[] = array(3, 'Widget', 'create', array('options' => array('force_rollback' => TRUE)), TRUE, TRUE, TRUE);
28 $r[] = array(3, 'Widget', 'create', array('options' => array('force_rollback' => FALSE)), TRUE, FALSE, FALSE);
29
30 $r[] = array(3, 'Widget', 'create', array('is_transactional' => TRUE, 'options' => array('force_rollback' => TRUE)), TRUE, TRUE, TRUE);
31 $r[] = array(3, 'Widget', 'create', array('is_transactional' => TRUE, 'options' => array('force_rollback' => FALSE)), TRUE, FALSE, FALSE);
32 $r[] = array(3, 'Widget', 'create', array('is_transactional' => FALSE, 'options' => array('force_rollback' => TRUE)), TRUE, TRUE, TRUE);
33 $r[] = array(3, 'Widget', 'create', array('is_transactional' => FALSE, 'options' => array('force_rollback' => FALSE)), FALSE, FALSE, FALSE);
34
35 $r[] = array(4, 'Widget', 'get', array(), FALSE, FALSE, FALSE);
36 $r[] = array(4, 'Widget', 'create', array(), TRUE, FALSE, FALSE);
37
38 $r[] = array(4, 'Widget', 'create', array('is_transactional' => TRUE), TRUE, FALSE, FALSE);
39 $r[] = array(4, 'Widget', 'create', array('is_transactional' => FALSE), FALSE, FALSE, FALSE);
40 $r[] = array(4, 'Widget', 'create', array('is_transactional' => 'nest'), TRUE, FALSE, TRUE);
41
42 $r[] = array(4, 'Widget', 'create', array('options' => array('force_rollback' => TRUE)), TRUE, TRUE, TRUE);
43 $r[] = array(4, 'Widget', 'create', array('options' => array('force_rollback' => FALSE)), TRUE, FALSE, FALSE);
44
45 return $r;
46 }
47
48 /**
49 * Ensure that API parameters "is_transactional" and "force_rollback" are parsed correctly
50 * @dataProvider transactionOptions
51 */
52 public function testTransactionOptions($version, $entity, $action, $params, $isTransactional, $isForceRollback, $isNested) {
53 $txs = new TransactionSubscriber();
54 $apiProvider = NULL;
55
56 $params['version'] = $version;
57 $apiRequest = \Civi\API\Request::create($entity, $action, $params, array());
58
59 $this->assertEquals($isTransactional, $txs->isTransactional($apiProvider, $apiRequest), 'check isTransactional');
60 $this->assertEquals($isForceRollback, $txs->isForceRollback($apiProvider, $apiRequest), 'check isForceRollback');
61 $this->assertEquals($isNested, $txs->isNested($apiProvider, $apiRequest), 'check isNested');
62 }
63
64 public function testForceRollback() {
65 $result = $this->callAPISuccess('contact', 'create', array(
66 'contact_type' => 'Individual',
67 'first_name' => 'Me',
68 'last_name' => 'Myself',
69 'options' => array(
70 'force_rollback' => TRUE,
71 ),
72 ));
73 $this->assertTrue(is_numeric($result['id']));
74 $this->assertDBQuery(0, 'SELECT count(*) FROM civicrm_contact WHERE id = %1', array(
75 1 => array($result['id'], 'Integer'),
76 ));
77 }
78 }