N°1345 - Add unit test

This commit is contained in:
Molkobain
2023-06-09 13:01:21 +02:00
parent 05559a944b
commit 74fec312d8

View File

@@ -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