N°1646 - Add unit tests

This commit is contained in:
Molkobain
2023-05-31 13:42:22 +02:00
parent bac6cbc1d8
commit 4d5d149079
4 changed files with 216 additions and 5 deletions

View File

@@ -1113,13 +1113,13 @@ class iTopDesignFormat
$oXPath = new DOMXPath($this->oDocument);
// N°5563 AttributeLinkedSet
// - remove relation_type & read_only (added in 3.1)
// - restore edit_mode attribute from legacy_edit_mode attribute
// - Remove relation_type & read_only (added in 3.1)
// - Restore edit_mode attribute from legacy_edit_mode attribute
$this->RemoveNodeFromXPath("/itop_design/classes//class/fields/field[@xsi:type='AttributeLinkedSet']/read_only");
$this->RemoveNodeFromXPath("/itop_design/classes//class/fields/field[@xsi:type='AttributeLinkedSet']/relation_type");
// N°5563 AttributeLinkedSetIndirect
// - remove read_only attribute (added in 3.1)
// - Remove read_only attribute (added in 3.1)
$this->RemoveNodeFromXPath("/itop_design/classes//class/fields/field[@xsi:type='AttributeLinkedSetIndirect']/read_only");
// N°4756 - Ease extensibility for CRUD operations : Event Service
@@ -1128,13 +1128,19 @@ class iTopDesignFormat
$this->RemoveNodeFromXPath('/itop_design/classes//class/event_listeners');
// N°3190 - Edit n:n LinkedSetIndirect in object details using a tagset-like widget
// - remove display style
// - Remove display style
$this->RemoveNodeFromXPath("/itop_design/classes//class/fields/field[@xsi:type='AttributeLinkedSet']/display_style");
$this->RemoveNodeFromXPath("/itop_design/classes//class/fields/field[@xsi:type='AttributeLinkedSetIndirect']/display_style");
// N°2783 Custom zlists
// N°2783 - Custom zlists
$this->RemoveNodeFromXPath("/itop_design/classes//class/presentation/custom_presentations");
$this->RemoveNodeFromXPath("/itop_design/meta/presentation/custom_presentations");
// N°1646 - Enum: logical ordering defined in datamodel (dashlet, list, transition menu...)
// - Remove sort type
$this->RemoveNodeFromXPath("/itop_design/classes//class/fields/field/sort_type");
// - Remove rank in values
$this->RemoveNodeFromXPath("/itop_design/classes//class/fields/field/values/value/rank");
}
/**

View File

@@ -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'],
],
];
}
}

View File

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

View File

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