Merge pull request #16608 from civicrm/5.23
[civicrm-core.git] / tests / phpunit / Civi / API / RequestTest.php
1 <?php
2 namespace Civi\API;
3
4 /**
5 */
6 class RequestTest extends \CiviUnitTestCase {
7
8 /**
9 * @return array
10 */
11 public function validEntityActionPairs() {
12 $cases = [];
13 $cases[] = [
14 ['MyEntity', 'MyAction', 3],
15 ['MyEntity', 'myaction', 3],
16 ];
17 $cases[] = [
18 ['my+entity', 'MyAction', 3],
19 ['MyEntity', 'myaction', 3],
20 ];
21 $cases[] = [
22 ['my entity with under_scores', 'My_Action', 3],
23 ['MyEntityWithUnderScores', 'my_action', 3],
24 ];
25 $cases[] = [
26 ['u_f_match', 'get Something', 3],
27 ['UFMatch', 'get_something', 3],
28 ];
29 return $cases;
30 }
31
32 /**
33 * @dataProvider validEntityActionPairs
34 * @param $input
35 * @param $expected
36 * @throws \API_Exception
37 */
38 public function testCreateRequest_EntityActionMunging($input, $expected) {
39 list ($inEntity, $inAction, $inVersion) = $input;
40 $apiRequest = Request::create($inEntity, $inAction, ['version' => $inVersion]);
41 $this->assertEquals($expected, [$apiRequest['entity'], $apiRequest['action'], $apiRequest['version']]);
42 }
43
44 /**
45 * @return array
46 */
47 public function invalidEntityActionPairs() {
48 $cases = [];
49 $cases[] = ['Not!Valid', 'create', 4];
50 $cases[] = ['My+Entity', 'MyAction', 4];
51 $cases[] = ['My Entity', 'MyAction', 4];
52 $cases[] = ['2MyEntity', 'MyAction', 4];
53 $cases[] = ['MyEntity', 'My+Action', 4];
54 $cases[] = ['MyEntity', 'My Action', 4];
55 $cases[] = ['MyEntity', '2Action', 4];
56 return $cases;
57 }
58
59 /**
60 * @dataProvider invalidEntityActionPairs
61 * @expectedException \Civi\API\Exception\NotImplementedException
62 * @param $inEntity
63 * @param $inAction
64 * @param $inVersion
65 * @throws \Civi\API\Exception\NotImplementedException
66 */
67 public function testCreateRequest_InvalidEntityAction($inEntity, $inAction, $inVersion) {
68 Request::create($inEntity, $inAction, ['version' => $inVersion], NULL);
69 }
70
71 }