commiting uncommited changes on live site
[weblabels.fsf.org.git] / crm.fsf.org / 20131203 / files / sites / all / modules-old / civicrm / tests / phpunit / Civi / API / RequestTest.php
1 <?php
2 namespace Civi\API;
3
4 require_once 'CiviTest/CiviUnitTestCase.php';
5
6 /**
7 */
8 class RequestTest extends \CiviUnitTestCase {
9
10 /**
11 * @return array
12 */
13 public function v4options() {
14 $cases = array(); // array(0 => $requestParams, 1 => $expectedOptions, 2 => $expectedData, 3 => $expectedChains)
15 $cases[] = array(
16 array('version' => 4), // requestParams
17 array(), // expectedOptions
18 array(), // expectedData
19 array(), // expectedChains
20 );
21 $cases[] = array(
22 array('version' => 4, 'debug' => TRUE), // requestParams
23 array('debug' => TRUE), // expectedOptions
24 array(), // expectedData
25 array(), // expectedChains
26 );
27 $cases[] = array(
28 array('version' => 4, 'format.is_success' => TRUE), // requestParams
29 array('format' => 'is_success'), // expectedOptions
30 array(), // expectedData
31 array(), // expectedChains
32 );
33 $cases[] = array(
34 array(
35 'version' => 4,
36 'option.limit' => 15,
37 'option.foo' => array('bar'),
38 'options' => array('whiz' => 'bang'),
39 'optionnotreally' => 'data',
40 ), // requestParams
41 array('limit' => 15, 'foo' => array('bar'), 'whiz' => 'bang'), // expectedOptions
42 array('optionnotreally' => 'data'), // expectedData
43 array(), // expectedChains
44 );
45 $cases[] = array(
46 array(
47 'version' => 4,
48 'return' => array('field1', 'field2'),
49 'return.field3' => 1,
50 'return.field4' => 0,
51 'returnontreally' => 'data',
52 ), // requestParams
53 array('return' => array('field1', 'field2', 'field3')), // expectedOptions
54 array('returnontreally' => 'data'), // expectedData
55 array(), // expectedChains
56 );
57 $cases[] = array(
58 array('version' => 4, 'foo' => array('bar'), 'whiz' => 'bang'), // requestParams
59 array(), // expectedOptions
60 array('foo' => array('bar'), 'whiz' => 'bang'), // expectedData
61 array(), // expectedChains
62 );
63 $cases[] = array(
64 array('version' => 4, 'api.foo.bar' => array('whiz' => 'bang')), // requestParams
65 array(), // expectedOptions
66 array(), // expectedData
67 array('api.foo.bar' => array('whiz' => 'bang')), // expectedChains
68 );
69 $cases[] = array(
70 array(
71 'version' => 4,
72 'option.limit' => 15,
73 'options' => array('whiz' => 'bang'),
74 'somedata' => 'data',
75 'moredata' => array('woosh'),
76 'return.field1' => 1,
77 'return' => array('field2'),
78 'api.first' => array('the first call'),
79 'api.second' => array('the second call'),
80 ), // requestParams
81 array('limit' => 15, 'whiz' => 'bang', 'return' => array('field1', 'field2')), // expectedOptions
82 array('somedata' => 'data', 'moredata' => array('woosh')), // expectedData
83 array('api.first' => array('the first call'), 'api.second' => array('the second call')), // expectedChains
84 );
85 return $cases;
86 }
87
88 /**
89 * @param array $inputParams
90 * @param $expectedOptions
91 * @param $expectedData
92 * @param $expectedChains
93 * @dataProvider v4options
94 */
95 public function testCreateRequest_v4Options($inputParams, $expectedOptions, $expectedData, $expectedChains) {
96 $apiRequest = Request::create('MyEntity', 'MyAction', $inputParams, NULL);
97 $this->assertEquals($expectedOptions, $apiRequest['options']->getArray());
98 $this->assertEquals($expectedData, $apiRequest['data']->getArray());
99 $this->assertEquals($expectedChains, $apiRequest['chains']);
100 }
101
102 /**
103 * @expectedException \API_Exception
104 */
105 public function testCreateRequest_v4BadEntity() {
106 Request::create('Not!Valid', 'create', array('version' => 4), NULL);
107 }
108
109 /**
110 * @expectedException \API_Exception
111 */
112 public function testCreateRequest_v4BadAction() {
113 Request::create('MyEntity', 'bad!action', array('version' => 4), NULL);
114 }
115
116 /**
117 * @return array
118 */
119 public function validEntityActionPairs() {
120 $cases = array();
121 $cases[] = array(
122 array('MyEntity', 'MyAction', 3),
123 array('MyEntity', 'myaction', 3),
124 );
125 $cases[] = array(
126 array('my+entity', 'MyAction', 3),
127 array('MyEntity', 'myaction', 3),
128 );
129 $cases[] = array(
130 array('my entity with under_scores', 'My_Action', 3),
131 array('MyEntityWithUnderScores', 'my_action', 3),
132 );
133 $cases[] = array(
134 array('u_f_match', 'get Something', 3),
135 array('UFMatch', 'get_something', 3),
136 );
137 $cases[] = array(
138 array('MyEntity', 'MyAction', 4),
139 array('MyEntity', 'myAction', 4),
140 );
141 return $cases;
142 }
143
144 /**
145 * @dataProvider validEntityActionPairs
146 * @param $input
147 * @param $expected
148 * @throws \API_Exception
149 */
150 public function testCreateRequest_EntityActionMunging($input, $expected) {
151 list ($inEntity, $inAction, $inVersion) = $input;
152 $apiRequest = Request::create($inEntity, $inAction, array('version' => $inVersion), NULL);
153 $this->assertEquals($expected, array($apiRequest['entity'], $apiRequest['action'], $apiRequest['version']));
154 }
155
156 /**
157 * @return array
158 */
159 public function invalidEntityActionPairs() {
160 $cases = array();
161 $cases[] = array('My+Entity', 'MyAction', 4);
162 $cases[] = array('My Entity', 'MyAction', 4);
163 $cases[] = array('2MyEntity', 'MyAction', 4);
164 $cases[] = array('MyEntity', 'My+Action', 4);
165 $cases[] = array('MyEntity', 'My Action', 4);
166 $cases[] = array('MyEntity', '2Action', 4);
167 return $cases;
168 }
169
170 /**
171 * @dataProvider invalidEntityActionPairs
172 * @expectedException \API_Exception
173 * @param $inEntity
174 * @param $inAction
175 * @param $inVersion
176 * @throws \API_Exception
177 */
178 public function testCreateRequest_InvalidEntityAction($inEntity, $inAction, $inVersion) {
179 Request::create($inEntity, $inAction, array('version' => $inVersion), NULL);
180 }
181
182 }