mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-23 18:48:51 +02:00
N°1345 - Add unit test
This commit is contained in:
@@ -678,6 +678,143 @@ class DBObjectTest extends ItopDataTestCase
|
||||
$oPerson->Set('email', 'test1@combodo.com');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \DBObject::EnumTransitions
|
||||
* @dataProvider EnumTransitionsProvider
|
||||
* @return void
|
||||
*/
|
||||
public function testEnumTransitions(string $sObjClass, array $aObjData, ?string $sObjCurrentState, string $sSortType, array $aExpectedSortedStimuli): void
|
||||
{
|
||||
// Create temp object
|
||||
$oObject = MetaModel::NewObject($sObjClass, $aObjData);
|
||||
|
||||
// Force current state if necessary
|
||||
if (false === is_null($sObjCurrentState)) {
|
||||
$oObject->Set('status', $sObjCurrentState);
|
||||
}
|
||||
|
||||
// Force sort type
|
||||
$oConfig = MetaModel::GetConfig();
|
||||
$oConfig->Set('lifecycle.transitions_sort_type', $sSortType);
|
||||
|
||||
// Retrieve sorted transitions
|
||||
$aTestedSortedTransitions = $oObject->EnumTransitions();
|
||||
|
||||
// Compare arrays keys as they reflect the order and as arrays values are not scalars
|
||||
$aTestedSortedStimuli = array_keys($aTestedSortedTransitions);
|
||||
$this->assertEquals($aExpectedSortedStimuli, $aTestedSortedStimuli, 'Transitions are not ordered as expected');
|
||||
}
|
||||
|
||||
public function EnumTransitionsProvider(): array
|
||||
{
|
||||
$sUserRequestClassName = 'UserRequest';
|
||||
$aUserRequestData = [
|
||||
'org_id' => 3,
|
||||
'caller_id' => 3,
|
||||
'title' => 'Test for EnumTransitions method',
|
||||
'description' => 'Hello there!',
|
||||
];
|
||||
|
||||
return [
|
||||
'UserRequest - XML sort' => [
|
||||
$sUserRequestClassName,
|
||||
$aUserRequestData,
|
||||
null,
|
||||
'xml',
|
||||
[
|
||||
'ev_assign',
|
||||
'ev_timeout',
|
||||
'ev_wait_for_approval',
|
||||
'ev_autoresolve',
|
||||
],
|
||||
],
|
||||
'UserRequest - XML sort when in specific state' => [
|
||||
$sUserRequestClassName,
|
||||
$aUserRequestData,
|
||||
'assigned',
|
||||
'xml',
|
||||
[
|
||||
'ev_pending',
|
||||
'ev_resolve',
|
||||
'ev_reassign',
|
||||
'ev_timeout',
|
||||
'ev_autoresolve',
|
||||
],
|
||||
],
|
||||
'UserRequest - Alphabetical (labels not codes) sort' => [
|
||||
$sUserRequestClassName,
|
||||
$aUserRequestData,
|
||||
null,
|
||||
'alphabetical',
|
||||
[
|
||||
'ev_assign',
|
||||
'ev_autoresolve',
|
||||
'ev_timeout',
|
||||
'ev_wait_for_approval',
|
||||
],
|
||||
],
|
||||
'UserRequest - Alphabetical (labels not codes) sort when in specific state' => [
|
||||
$sUserRequestClassName,
|
||||
$aUserRequestData,
|
||||
'assigned',
|
||||
'alphabetical',
|
||||
[
|
||||
'ev_autoresolve',
|
||||
'ev_resolve',
|
||||
'ev_pending',
|
||||
'ev_reassign',
|
||||
'ev_timeout',
|
||||
],
|
||||
],
|
||||
'UserRequest - Fixed sort' => [
|
||||
$sUserRequestClassName,
|
||||
$aUserRequestData,
|
||||
null,
|
||||
'fixed',
|
||||
[
|
||||
'ev_wait_for_approval',
|
||||
'ev_assign',
|
||||
'ev_timeout',
|
||||
'ev_autoresolve',
|
||||
],
|
||||
],
|
||||
'UserRequest - Fixed sort when in specific state' => [
|
||||
$sUserRequestClassName,
|
||||
$aUserRequestData,
|
||||
'resolved',
|
||||
'fixed',
|
||||
[
|
||||
'ev_reopen',
|
||||
'ev_autoresolve',
|
||||
'ev_close',
|
||||
],
|
||||
],
|
||||
'UserRequest - Relative sort' => [
|
||||
$sUserRequestClassName,
|
||||
$aUserRequestData,
|
||||
null,
|
||||
'relative',
|
||||
[
|
||||
'ev_wait_for_approval',
|
||||
'ev_assign',
|
||||
'ev_timeout',
|
||||
'ev_autoresolve',
|
||||
],
|
||||
],
|
||||
'UserRequest - Relative sort when in specific state' => [
|
||||
$sUserRequestClassName,
|
||||
$aUserRequestData,
|
||||
'resolved',
|
||||
'relative',
|
||||
[
|
||||
'ev_autoresolve',
|
||||
'ev_close',
|
||||
'ev_reopen',
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \ArchivedObjectException
|
||||
* @throws \CoreException
|
||||
|
||||
Reference in New Issue
Block a user