mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-23 10:38:45 +02:00
N°1646 - Add unit tests
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2023 Combodo SARL
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
namespace Combodo\iTop\Test\UnitTest\Core;
|
||||
|
||||
use MockValueSetObjects;
|
||||
use Combodo\iTop\Test\UnitTest\ItopTestCase;
|
||||
use MetaModel;
|
||||
use ValueSetDefinition;
|
||||
use ValueSetEnum;
|
||||
|
||||
|
||||
/**
|
||||
* @runTestsInSeparateProcesses
|
||||
* @preserveGlobalState disabled
|
||||
* @backupGlobals disabled
|
||||
*/
|
||||
class ValueSetDefinitionTest extends ItopTestCase
|
||||
{
|
||||
/**
|
||||
* @param string $sValueSetDefClass
|
||||
* @param array $aInputArgs
|
||||
* @param array $aExpectedData
|
||||
*
|
||||
* @return void
|
||||
* @dataProvider GetValuesProvider
|
||||
* @covers \ValueSetDefinition::GetValues
|
||||
*/
|
||||
public function testGetValues(string $sValueSetDefClass, array $aInputArgs, array $aExpectedData)
|
||||
{
|
||||
$oValueSetDef = new $sValueSetDefClass(... $aInputArgs);
|
||||
$aTestedData = $oValueSetDef->GetValues([]);
|
||||
|
||||
// Check that both arrays have the values *sorted* in the same order
|
||||
$aExpectedValues = array_values($aExpectedData);
|
||||
$aTestedValues = array_values($aTestedData);
|
||||
$this->assertEquals($aExpectedValues, $aTestedValues, 'Values are not ordered as expected');
|
||||
}
|
||||
|
||||
public function GetValuesProvider(): array
|
||||
{
|
||||
return [
|
||||
'ValueSetEnum: Preserved order' => [
|
||||
ValueSetEnum::class,
|
||||
['new,assigned,resolved'],
|
||||
['new' => 'new', 'assigned' => 'assigned', 'resolved' => 'resolved'],
|
||||
],
|
||||
'ValueSetEnum: Preserved order' => [
|
||||
ValueSetEnum::class,
|
||||
['new,assigned,resolved'],
|
||||
['new' => 'new', 'assigned' => 'assigned', 'resolved' => 'resolved'],
|
||||
],
|
||||
'ValueSetEnum: Reorder alphabetically' => [
|
||||
ValueSetEnum::class,
|
||||
['new,assigned,resolved', true],
|
||||
['assigned' => 'assigned', 'new' => 'new', 'resolved' => 'resolved'],
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -61,6 +61,74 @@
|
||||
<field id="status" xsi:type="AttributeLinkedSetIndirect"/>
|
||||
</fields>
|
||||
</class>
|
||||
<class id="ClassWithAttributeEnumSorted">
|
||||
<fields>
|
||||
<field id="enum_unsorted" xsi:type="AttributeEnum">
|
||||
<values>
|
||||
<value id="new">
|
||||
<code>new</code>
|
||||
</value>
|
||||
<value id="assigned">
|
||||
<code>assigned</code>
|
||||
</value>
|
||||
<value id="resolved">
|
||||
<code>resolved</code>
|
||||
</value>
|
||||
</values>
|
||||
<sql>enum_unsorted</sql>
|
||||
<default_value>new</default_value>
|
||||
<is_null_allowed>false</is_null_allowed>
|
||||
</field>
|
||||
<field id="enum_sorted_by_code_explicitly" xsi:type="AttributeEnum">
|
||||
<values>
|
||||
<value id="new">
|
||||
<code>new</code>
|
||||
</value>
|
||||
<value id="assigned">
|
||||
<code>assigned</code>
|
||||
</value>
|
||||
<value id="resolved">
|
||||
<code>resolved</code>
|
||||
</value>
|
||||
</values>
|
||||
<sql>enum_sorted_by_code_explicitly</sql>
|
||||
<default_value>new</default_value>
|
||||
<is_null_allowed>false</is_null_allowed>
|
||||
</field>
|
||||
<field id="enum_sorted_by_label" xsi:type="AttributeEnum">
|
||||
<values>
|
||||
<value id="new">
|
||||
<code>new</code>
|
||||
</value>
|
||||
<value id="assigned">
|
||||
<code>assigned</code>
|
||||
</value>
|
||||
<value id="resolved">
|
||||
<code>resolved</code>
|
||||
</value>
|
||||
</values>
|
||||
<sql>enum_sorted_by_label</sql>
|
||||
<default_value>new</default_value>
|
||||
<is_null_allowed>false</is_null_allowed>
|
||||
</field>
|
||||
<field id="enum_sorted_by_rank_and_not_sorted_correctly_in_xml" xsi:type="AttributeEnum">
|
||||
<values>
|
||||
<value id="assigned">
|
||||
<code>assigned</code>
|
||||
</value>
|
||||
<value id="resolved">
|
||||
<code>resolved</code>
|
||||
</value>
|
||||
<value id="new">
|
||||
<code>new</code>
|
||||
</value>
|
||||
</values>
|
||||
<sql>enum_sorted_by_rank_and_not_sorted_correctly_in_xml</sql>
|
||||
<default_value>new</default_value>
|
||||
<is_null_allowed>false</is_null_allowed>
|
||||
</field>
|
||||
</fields>
|
||||
</class>
|
||||
<class id="ClassWithEventListeners">
|
||||
<methods>
|
||||
<method id="OnUpdateDone" _delta="define">
|
||||
|
||||
@@ -89,6 +89,80 @@
|
||||
</field>
|
||||
</fields>
|
||||
</class>
|
||||
<class id="ClassWithAttributeEnumSorted">
|
||||
<fields>
|
||||
<field id="enum_unsorted" xsi:type="AttributeEnum">
|
||||
<values>
|
||||
<value id="new">
|
||||
<code>new</code>
|
||||
</value>
|
||||
<value id="assigned">
|
||||
<code>assigned</code>
|
||||
</value>
|
||||
<value id="resolved">
|
||||
<code>resolved</code>
|
||||
</value>
|
||||
</values>
|
||||
<sql>enum_unsorted</sql>
|
||||
<default_value>new</default_value>
|
||||
<is_null_allowed>false</is_null_allowed>
|
||||
</field>
|
||||
<field id="enum_sorted_by_code_explicitly" xsi:type="AttributeEnum">
|
||||
<sort_type>code</sort_type>
|
||||
<values>
|
||||
<value id="new">
|
||||
<code>new</code>
|
||||
</value>
|
||||
<value id="assigned">
|
||||
<code>assigned</code>
|
||||
</value>
|
||||
<value id="resolved">
|
||||
<code>resolved</code>
|
||||
</value>
|
||||
</values>
|
||||
<sql>enum_sorted_by_code_explicitly</sql>
|
||||
<default_value>new</default_value>
|
||||
<is_null_allowed>false</is_null_allowed>
|
||||
</field>
|
||||
<field id="enum_sorted_by_label" xsi:type="AttributeEnum">
|
||||
<sort_type>label</sort_type>
|
||||
<values>
|
||||
<value id="new">
|
||||
<code>new</code>
|
||||
</value>
|
||||
<value id="assigned">
|
||||
<code>assigned</code>
|
||||
</value>
|
||||
<value id="resolved">
|
||||
<code>resolved</code>
|
||||
</value>
|
||||
</values>
|
||||
<sql>enum_sorted_by_label</sql>
|
||||
<default_value>new</default_value>
|
||||
<is_null_allowed>false</is_null_allowed>
|
||||
</field>
|
||||
<field id="enum_sorted_by_rank_and_not_sorted_correctly_in_xml" xsi:type="AttributeEnum">
|
||||
<sort_type>rank</sort_type>
|
||||
<values>
|
||||
<value id="assigned">
|
||||
<code>assigned</code>
|
||||
<rank>2</rank>
|
||||
</value>
|
||||
<value id="resolved">
|
||||
<code>resolved</code>
|
||||
<rank>3</rank>
|
||||
</value>
|
||||
<value id="new">
|
||||
<code>new</code>
|
||||
<rank>1</rank>
|
||||
</value>
|
||||
</values>
|
||||
<sql>enum_sorted_by_rank_and_not_sorted_correctly_in_xml</sql>
|
||||
<default_value>new</default_value>
|
||||
<is_null_allowed>false</is_null_allowed>
|
||||
</field>
|
||||
</fields>
|
||||
</class>
|
||||
<class id="ClassWithEventListeners">
|
||||
<event_listeners>
|
||||
<event_listener id="OnUserRequestUpdateDone" _delta="define">
|
||||
|
||||
Reference in New Issue
Block a user