diff --git a/setup/itopdesignformat.class.inc.php b/setup/itopdesignformat.class.inc.php
index 1290d6558..ecf4be546 100644
--- a/setup/itopdesignformat.class.inc.php
+++ b/setup/itopdesignformat.class.inc.php
@@ -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");
}
/**
diff --git a/tests/php-unit-tests/unitary-tests/core/ValueSetDefinitionTest.php b/tests/php-unit-tests/unitary-tests/core/ValueSetDefinitionTest.php
new file mode 100644
index 000000000..bdaf3e148
--- /dev/null
+++ b/tests/php-unit-tests/unitary-tests/core/ValueSetDefinitionTest.php
@@ -0,0 +1,63 @@
+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'],
+ ],
+ ];
+ }
+}
\ No newline at end of file
diff --git a/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.1_to_3.0.expected.xml b/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.1_to_3.0.expected.xml
index e89a5a501..c11c89290 100644
--- a/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.1_to_3.0.expected.xml
+++ b/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.1_to_3.0.expected.xml
@@ -61,6 +61,74 @@
+
+
+
+
+
+ new
+
+
+ assigned
+
+
+ resolved
+
+
+ enum_unsorted
+ new
+ false
+
+
+
+
+ new
+
+
+ assigned
+
+
+ resolved
+
+
+ enum_sorted_by_code_explicitly
+ new
+ false
+
+
+
+
+ new
+
+
+ assigned
+
+
+ resolved
+
+
+ enum_sorted_by_label
+ new
+ false
+
+
+
+
+ assigned
+
+
+ resolved
+
+
+ new
+
+
+ enum_sorted_by_rank_and_not_sorted_correctly_in_xml
+ new
+ false
+
+
+
diff --git a/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.1_to_3.0.input.xml b/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.1_to_3.0.input.xml
index 6fdb02340..7212ef465 100644
--- a/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.1_to_3.0.input.xml
+++ b/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.1_to_3.0.input.xml
@@ -89,6 +89,80 @@
+
+
+
+
+
+ new
+
+
+ assigned
+
+
+ resolved
+
+
+ enum_unsorted
+ new
+ false
+
+
+ code
+
+
+ new
+
+
+ assigned
+
+
+ resolved
+
+
+ enum_sorted_by_code_explicitly
+ new
+ false
+
+
+ label
+
+
+ new
+
+
+ assigned
+
+
+ resolved
+
+
+ enum_sorted_by_label
+ new
+ false
+
+
+ rank
+
+
+ assigned
+ 2
+
+
+ resolved
+ 3
+
+
+ new
+ 1
+
+
+ enum_sorted_by_rank_and_not_sorted_correctly_in_xml
+ new
+ false
+
+
+