mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-20 09:08:42 +02:00
N°1646 - Add unit tests
This commit is contained in:
@@ -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");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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