6768d6885c0d6dcc3b3a0455e1cb200b6fff3f3d
4 require_once 'CiviTest/CiviUnitTestCase.php';
8 class RequestTest
extends \CiviUnitTestCase
{
13 public function v4options() {
14 $cases = array(); // array(0 => $requestParams, 1 => $expectedOptions, 2 => $expectedData, 3 => $expectedChains)
16 array('version' => 4), // requestParams
17 array(), // expectedOptions
18 array(), // expectedData
19 array(), // expectedChains
22 array('version' => 4, 'debug' => TRUE), // requestParams
23 array('debug' => TRUE), // expectedOptions
24 array(), // expectedData
25 array(), // expectedChains
28 array('version' => 4, 'format.is_success' => TRUE), // requestParams
29 array('format' => 'is_success'), // expectedOptions
30 array(), // expectedData
31 array(), // expectedChains
37 'option.foo' => array('bar'),
38 'options' => array('whiz' => 'bang'),
39 'optionnotreally' => 'data',
41 array('limit' => 15, 'foo' => array('bar'), 'whiz' => 'bang'), // expectedOptions
42 array('optionnotreally' => 'data'), // expectedData
43 array(), // expectedChains
48 'return' => array('field1', 'field2'),
51 'returnontreally' => 'data',
53 array('return' => array('field1', 'field2', 'field3')), // expectedOptions
54 array('returnontreally' => 'data'), // expectedData
55 array(), // expectedChains
58 array('version' => 4, 'foo' => array('bar'), 'whiz' => 'bang'), // requestParams
59 array(), // expectedOptions
60 array('foo' => array('bar'), 'whiz' => 'bang'), // expectedData
61 array(), // expectedChains
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
73 'options' => array('whiz' => 'bang'),
75 'moredata' => array('woosh'),
77 'return' => array('field2'),
78 'api.first' => array('the first call'),
79 'api.second' => array('the second call'),
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
89 * @param array $inputParams
90 * @param $expectedOptions
91 * @param $expectedData
92 * @param $expectedChains
93 * @dataProvider v4options
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']);
103 * @expectedException \API_Exception
105 public function testCreateRequest_v4BadEntity() {
106 Request
::create('Not!Valid', 'create', array('version' => 4), NULL);
110 * @expectedException \API_Exception
112 public function testCreateRequest_v4BadAction() {
113 Request
::create('MyEntity', 'bad!action', array('version' => 4), NULL);
119 public function validEntityActionPairs() {
122 array('MyEntity', 'MyAction', 3),
123 array('MyEntity', 'myaction', 3),
126 array('my+entity', 'MyAction', 3),
127 array('MyEntity', 'myaction', 3),
130 array('my entity with under_scores', 'My_Action', 3),
131 array('MyEntityWithUnderScores', 'my_action', 3),
134 array('u_f_match', 'get Something', 3),
135 array('UFMatch', 'get_something', 3),
138 array('MyEntity', 'MyAction', 4),
139 array('MyEntity', 'myAction', 4),
145 * @dataProvider validEntityActionPairs
148 * @throws \API_Exception
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']));
159 public function invalidEntityActionPairs() {
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);
171 * @dataProvider invalidEntityActionPairs
172 * @expectedException \API_Exception
176 * @throws \API_Exception
178 public function testCreateRequest_InvalidEntityAction($inEntity, $inAction, $inVersion) {
179 Request
::create($inEntity, $inAction, array('version' => $inVersion), NULL);