@@ -955,6 +955,59 @@ public function providerSetTargetCategory_noTemplate() {
955
955
];
956
956
}
957
957
958
+ public function providerSetTargetCategory_TargetOverridesTemplate () {
959
+ // When the target ticket uses a ticket template and specifies a category
960
+ $ category1 = new ITILCategory ();
961
+ $ category1Id = $ category1 ->import ([
962
+ 'name ' => 'category 1 ' ,
963
+ 'entities_id ' => 0 ,
964
+ ]);
965
+
966
+ $ category2 = new ITILCategory ();
967
+ $ category2Id = $ category2 ->import ([
968
+ 'name ' => 'category 2 ' ,
969
+ 'entities_id ' => 0 ,
970
+ ]);
971
+
972
+ $ ticketTemplate = $ this ->getGlpiCoreItem (
973
+ TicketTemplate::getType (), [
974
+ 'name ' => 'template with predefined category to be overriden ' ,
975
+ ]
976
+ );
977
+ $ this ->getGlpiCoreItem (TicketTemplatePredefinedField::getType (), [
978
+ 'tickettemplates_id ' => $ ticketTemplate ->getID (),
979
+ 'num ' => 7 , // ITIL category
980
+ 'value ' => $ category1Id
981
+ ]);
982
+
983
+ $ form = $ this ->getForm ();
984
+
985
+ /** @var \PluginFormcreatorTargetTicket */
986
+ $ instance1 = $ this ->newTestedInstance ();
987
+ $ instance1 ->add ([
988
+ 'name ' => 'target ticket ' ,
989
+ 'target_name ' => 'target ticket ' ,
990
+ 'plugin_formcreator_forms_id ' => $ form ->getID (),
991
+ 'tickettemplates_id ' => $ ticketTemplate ->getID (),
992
+ 'category_rule ' => $ instance1 ::CATEGORY_RULE_SPECIFIC ,
993
+ 'category_question ' => $ category2Id ,
994
+ ]);
995
+
996
+ $ formanswer = new PluginFormcreatorFormAnswer ();
997
+ $ formanswer ->add ([
998
+ 'plugin_formcreator_forms_id ' => $ form ->getID (),
999
+ ]);
1000
+ $ this ->boolean ($ formanswer ->isNewItem ())->isFalse ();
1001
+
1002
+ return [
1003
+ [
1004
+ 'instance ' => $ instance1 ,
1005
+ 'formanswer ' => $ formanswer ,
1006
+ 'expected ' => $ category2Id ,
1007
+ ],
1008
+ ];
1009
+ }
1010
+
958
1011
/**
959
1012
* Test if a template with a predefined category is properly applied
960
1013
*
@@ -1010,7 +1063,8 @@ public function providerSetTargetCategory() {
1010
1063
return array_merge (
1011
1064
$ this ->providerSetTargetCategory_nothing (),
1012
1065
$ this ->providerSetTargetCategory_noTemplate (),
1013
- $ this ->providerSetTargetCategory_FromTemplate ()
1066
+ $ this ->providerSetTargetCategory_FromTemplate (),
1067
+ $ this ->providerSetTargetCategory_TargetOverridesTemplate ()
1014
1068
);
1015
1069
}
1016
1070
@@ -1019,8 +1073,7 @@ public function providerSetTargetCategory() {
1019
1073
*/
1020
1074
public function testSetTargetCategory ($ instance , $ formanswer , $ expected ) {
1021
1075
PluginFormcreatorFields::resetVisibilityCache ();
1022
- $ data = $ this ->callPrivateMethod ($ instance , 'getDefaultData ' , $ formanswer );
1023
- $ output = $ this ->callPrivateMethod ($ instance , 'setTargetCategory ' , $ data , $ formanswer );
1076
+ $ output = $ this ->callPrivateMethod ($ instance , 'getDefaultData ' , $ formanswer );
1024
1077
1025
1078
$ this ->integer ((int ) $ output ['itilcategories_id ' ])->isEqualTo ($ expected );
1026
1079
}
0 commit comments