Skip to content

Commit

Permalink
CRM-17867 - Api test fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
colemanw committed Mar 15, 2016
1 parent 41626a7 commit 675ddc4
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 125 deletions.
6 changes: 5 additions & 1 deletion Civi/API/Request.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,11 @@ public static function create($entity, $action, $params, $extra = NULL) {
return $apiRequest;

case 4:
$apiCall = call_user_func(array("Civi\\Api4\\$entity", $action));
$callable = array("Civi\\Api4\\$entity", $action);
if (!is_callable($callable)) {
throw new Exception\NotImplementedException("API ($entity, $action) does not exist (join the API team and implement it!)");
}
$apiCall = call_user_func($callable);
$apiRequest['id'] = self::$nextId++;
unset($params['version']);
foreach ($params as $name => $param) {
Expand Down
2 changes: 1 addition & 1 deletion tests/phpunit/Civi/API/KernelTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
/**
*/
class KernelTest extends \CiviUnitTestCase {
const MOCK_VERSION = 99;
const MOCK_VERSION = 3;

/**
* @var array(int => array('name' => string $eventName, 'type' => string $className))
Expand Down
115 changes: 3 additions & 112 deletions tests/phpunit/Civi/API/RequestTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,112 +5,6 @@
*/
class RequestTest extends \CiviUnitTestCase {

/**
* @return array
*/
public function v4options() {
$cases = array(); // array(0 => $requestParams, 1 => $expectedOptions, 2 => $expectedData, 3 => $expectedChains)
$cases[] = array(
array('version' => 4), // requestParams
array(), // expectedOptions
array(), // expectedData
array(), // expectedChains
);
$cases[] = array(
array('version' => 4, 'debug' => TRUE), // requestParams
array('debug' => TRUE), // expectedOptions
array(), // expectedData
array(), // expectedChains
);
$cases[] = array(
array('version' => 4, 'format.is_success' => TRUE), // requestParams
array('format' => 'is_success'), // expectedOptions
array(), // expectedData
array(), // expectedChains
);
$cases[] = array(
array(
'version' => 4,
'option.limit' => 15,
'option.foo' => array('bar'),
'options' => array('whiz' => 'bang'),
'optionnotreally' => 'data',
), // requestParams
array('limit' => 15, 'foo' => array('bar'), 'whiz' => 'bang'), // expectedOptions
array('optionnotreally' => 'data'), // expectedData
array(), // expectedChains
);
$cases[] = array(
array(
'version' => 4,
'return' => array('field1', 'field2'),
'return.field3' => 1,
'return.field4' => 0,
'returnontreally' => 'data',
), // requestParams
array('return' => array('field1', 'field2', 'field3')), // expectedOptions
array('returnontreally' => 'data'), // expectedData
array(), // expectedChains
);
$cases[] = array(
array('version' => 4, 'foo' => array('bar'), 'whiz' => 'bang'), // requestParams
array(), // expectedOptions
array('foo' => array('bar'), 'whiz' => 'bang'), // expectedData
array(), // expectedChains
);
$cases[] = array(
array('version' => 4, 'api.foo.bar' => array('whiz' => 'bang')), // requestParams
array(), // expectedOptions
array(), // expectedData
array('api.foo.bar' => array('whiz' => 'bang')), // expectedChains
);
$cases[] = array(
array(
'version' => 4,
'option.limit' => 15,
'options' => array('whiz' => 'bang'),
'somedata' => 'data',
'moredata' => array('woosh'),
'return.field1' => 1,
'return' => array('field2'),
'api.first' => array('the first call'),
'api.second' => array('the second call'),
), // requestParams
array('limit' => 15, 'whiz' => 'bang', 'return' => array('field1', 'field2')), // expectedOptions
array('somedata' => 'data', 'moredata' => array('woosh')), // expectedData
array('api.first' => array('the first call'), 'api.second' => array('the second call')), // expectedChains
);
return $cases;
}

/**
* @param array $inputParams
* @param $expectedOptions
* @param $expectedData
* @param $expectedChains
* @dataProvider v4options
*/
public function testCreateRequest_v4Options($inputParams, $expectedOptions, $expectedData, $expectedChains) {
$apiRequest = Request::create('MyEntity', 'MyAction', $inputParams, NULL);
$this->assertEquals($expectedOptions, $apiRequest['options']->getArray());
$this->assertEquals($expectedData, $apiRequest['data']->getArray());
$this->assertEquals($expectedChains, $apiRequest['chains']);
}

/**
* @expectedException \API_Exception
*/
public function testCreateRequest_v4BadEntity() {
Request::create('Not!Valid', 'create', array('version' => 4), NULL);
}

/**
* @expectedException \API_Exception
*/
public function testCreateRequest_v4BadAction() {
Request::create('MyEntity', 'bad!action', array('version' => 4), NULL);
}

/**
* @return array
*/
Expand All @@ -132,10 +26,6 @@ public function validEntityActionPairs() {
array('u_f_match', 'get Something', 3),
array('UFMatch', 'get_something', 3),
);
$cases[] = array(
array('MyEntity', 'MyAction', 4),
array('MyEntity', 'myAction', 4),
);
return $cases;
}

Expand All @@ -156,6 +46,7 @@ public function testCreateRequest_EntityActionMunging($input, $expected) {
*/
public function invalidEntityActionPairs() {
$cases = array();
$cases[] = array('Not!Valid', 'create', 4);
$cases[] = array('My+Entity', 'MyAction', 4);
$cases[] = array('My Entity', 'MyAction', 4);
$cases[] = array('2MyEntity', 'MyAction', 4);
Expand All @@ -167,11 +58,11 @@ public function invalidEntityActionPairs() {

/**
* @dataProvider invalidEntityActionPairs
* @expectedException \API_Exception
* @expectedException \Civi\API\Exception\NotImplementedException
* @param $inEntity
* @param $inAction
* @param $inVersion
* @throws \API_Exception
* @throws \Civi\API\Exception\NotImplementedException
*/
public function testCreateRequest_InvalidEntityAction($inEntity, $inAction, $inVersion) {
Request::create($inEntity, $inAction, array('version' => $inVersion), NULL);
Expand Down
18 changes: 9 additions & 9 deletions tests/phpunit/Civi/API/Subscriber/TransactionSubscriberTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,15 +67,15 @@ public function transactionOptions() {
FALSE,
);

$r[] = array(4, 'Widget', 'get', array(), FALSE, FALSE, FALSE);
$r[] = array(4, 'Widget', 'create', array(), TRUE, FALSE, FALSE);

$r[] = array(4, 'Widget', 'create', array('is_transactional' => TRUE), TRUE, FALSE, FALSE);
$r[] = array(4, 'Widget', 'create', array('is_transactional' => FALSE), FALSE, FALSE, FALSE);
$r[] = array(4, 'Widget', 'create', array('is_transactional' => 'nest'), TRUE, FALSE, TRUE);

$r[] = array(4, 'Widget', 'create', array('options' => array('force_rollback' => TRUE)), TRUE, TRUE, TRUE);
$r[] = array(4, 'Widget', 'create', array('options' => array('force_rollback' => FALSE)), TRUE, FALSE, FALSE);
// $r[] = array(4, 'Widget', 'get', array(), FALSE, FALSE, FALSE);
// $r[] = array(4, 'Widget', 'create', array(), TRUE, FALSE, FALSE);
//
// $r[] = array(4, 'Widget', 'create', array('is_transactional' => TRUE), TRUE, FALSE, FALSE);
// $r[] = array(4, 'Widget', 'create', array('is_transactional' => FALSE), FALSE, FALSE, FALSE);
// $r[] = array(4, 'Widget', 'create', array('is_transactional' => 'nest'), TRUE, FALSE, TRUE);
//
// $r[] = array(4, 'Widget', 'create', array('options' => array('force_rollback' => TRUE)), TRUE, TRUE, TRUE);
// $r[] = array(4, 'Widget', 'create', array('options' => array('force_rollback' => FALSE)), TRUE, FALSE, FALSE);

return $r;
}
Expand Down
4 changes: 2 additions & 2 deletions tests/phpunit/api/v3/SyntaxConformanceTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -711,7 +711,7 @@ public function testEmptyParam_get($Entity) {
}
$result = civicrm_api($Entity, 'Get', array());
$this->assertEquals(1, $result['is_error']);
$this->assertContains("Mandatory key(s) missing from params array", $result['error_message']);
$this->assertContains("Unknown api version", $result['error_message']);
}

/**
Expand Down Expand Up @@ -1362,7 +1362,7 @@ public function testEmptyParam_delete($Entity) {
}
$result = civicrm_api($Entity, 'Delete', array());
$this->assertEquals(1, $result['is_error']);
$this->assertContains("Mandatory key(s) missing from params array", $result['error_message']);
$this->assertContains("Unknown api version", $result['error_message']);
}

/**
Expand Down

0 comments on commit 675ddc4

Please sign in to comment.