Skip to content

Commit 938f337

Browse files
ccaillycedric-anne
authored andcommitted
fix(forms-migration): Handle service catalog description and deleted status
1 parent 149351d commit 938f337

File tree

3 files changed

+91
-2
lines changed

3 files changed

+91
-2
lines changed

phpunit/functional/Glpi/Form/Migration/FormMigrationTest.php

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -723,6 +723,7 @@ public static function provideFormMigrationTranslations(): iterable
723723
'raw_translations' => [
724724
'Test form migration for translations' => 'Tester la migration des formulaires pour les traductions',
725725
'This is a description to test the translation' => 'Voici une description pour tester la traduction',
726+
'<p>This is a header to test the translation</p>' => '<p>Voici un en-tête pour tester la traduction</p>',
726727
'First section' => 'Première section',
727728
'First question' => 'Première question',
728729
'&#60;p&#62;&#60;strong&#62;Test description for &#60;/strong&#62;first&#60;strong&#62; &#60;span style="color: #b96ad9;"&#62;question&#60;/span&#62;&#60;/strong&#62;&#60;/p&#62;' => '&#60;p&#62;&#60;strong&#62;Test de description&#60;/strong&#62; pour la première &#60;span style="color: #b96ad9;"&#62;&#60;strong&#62;question&#60;/strong&#62;&#60;/span&#62;&#60;/p&#62;',
@@ -768,6 +769,12 @@ public static function provideFormMigrationTranslations(): iterable
768769
'items_id' => $form->getID(),
769770
'itemtype' => Form::class,
770771
'key' => Form::TRANSLATION_KEY_HEADER,
772+
'translations' => ['one' => '<p>Voici un en-tête pour tester la traduction</p>'],
773+
],
774+
[
775+
'items_id' => $form->getID(),
776+
'itemtype' => Form::class,
777+
'key' => Form::TRANSLATION_KEY_DESCRIPTION,
771778
'translations' => ['one' => 'Voici une description pour tester la traduction'],
772779
],
773780
[
@@ -1031,6 +1038,84 @@ public function testFormMigrationUpdateHorizontalRanks(): void
10311038
}
10321039
}
10331040

1041+
public function testFormMigrationWithDeletedForm(): void
1042+
{
1043+
/**
1044+
* @var \DBmysql $DB
1045+
*/
1046+
global $DB;
1047+
1048+
// Insert a new form
1049+
$this->assertTrue($DB->insert(
1050+
'glpi_plugin_formcreator_forms',
1051+
[
1052+
'name' => 'Test form migration for deleted form',
1053+
'is_deleted' => 1,
1054+
]
1055+
));
1056+
1057+
// Insert a new section
1058+
$this->assertTrue($DB->insert(
1059+
'glpi_plugin_formcreator_sections',
1060+
[
1061+
'name' => 'Test form migration for deleted form - Section',
1062+
'plugin_formcreator_forms_id' => $DB->insertId(),
1063+
]
1064+
));
1065+
1066+
// Process migration
1067+
$migration = new FormMigration($DB, FormAccessControlManager::getInstance());
1068+
$this->setPrivateProperty($migration, 'result', new PluginMigrationResult());
1069+
$this->assertTrue($this->callPrivateMethod($migration, 'processMigration'));
1070+
1071+
$form = getItemByTypeName(Form::class, 'Test form migration for deleted form');
1072+
$this->assertTrue((bool) $form->isDeleted());
1073+
}
1074+
1075+
public function testFormMigrationFormContentField(): void
1076+
{
1077+
/**
1078+
* @var \DBmysql $DB
1079+
*/
1080+
global $DB;
1081+
1082+
// Insert a new form
1083+
$this->assertTrue($DB->insert(
1084+
'glpi_plugin_formcreator_forms',
1085+
[
1086+
'name' => 'Test form migration for form content field',
1087+
'description' => '<p>Test description</p>',
1088+
'content' => '<p>Test header</p>',
1089+
]
1090+
));
1091+
1092+
// Insert a new section
1093+
$this->assertTrue($DB->insert(
1094+
'glpi_plugin_formcreator_sections',
1095+
[
1096+
'name' => 'Test form migration for form content field - Section',
1097+
'plugin_formcreator_forms_id' => $DB->insertId(),
1098+
]
1099+
));
1100+
1101+
// Process migration
1102+
$migration = new FormMigration($DB, FormAccessControlManager::getInstance());
1103+
$this->setPrivateProperty($migration, 'result', new PluginMigrationResult());
1104+
$this->assertTrue($this->callPrivateMethod($migration, 'processMigration'));
1105+
1106+
$form = getItemByTypeName(Form::class, 'Test form migration for form content field');
1107+
$this->assertNotFalse($form);
1108+
1109+
$this->assertEquals(
1110+
'<p>Test description</p>',
1111+
$form->fields['description']
1112+
);
1113+
$this->assertEquals(
1114+
'<p>Test header</p>',
1115+
$form->fields['header']
1116+
);
1117+
}
1118+
10341119
public static function provideFormMigrationTagConversion(): iterable
10351120
{
10361121
yield 'Single question tag' => [

src/Glpi/Form/Migration/FormMigration.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,12 +382,14 @@ private function processMigrationOfBasicProperties(): void
382382
$raw_forms = $this->db->request([
383383
'SELECT' => [
384384
'id',
385-
'description AS header',
385+
'description',
386+
'content AS header',
386387
'name',
387388
'plugin_formcreator_categories_id',
388389
'entities_id',
389390
'is_recursive',
390391
'is_visible AS is_active',
392+
'is_deleted',
391393
],
392394
'FROM' => 'glpi_plugin_formcreator_forms',
393395
]);
@@ -398,13 +400,15 @@ private function processMigrationOfBasicProperties(): void
398400
[
399401
'name' => $raw_form['name'],
400402
'header' => $raw_form['header'],
403+
'description' => $raw_form['description'],
401404
'forms_categories_id' => $this->getMappedItemTarget(
402405
'PluginFormcreatorCategory',
403406
$raw_form['plugin_formcreator_categories_id']
404407
)['items_id'] ?? 0,
405408
'entities_id' => $raw_form['entities_id'],
406409
'is_recursive' => $raw_form['is_recursive'],
407410
'is_active' => $raw_form['is_active'],
411+
'is_deleted' => $raw_form['is_deleted'],
408412
'_from_migration' => true,
409413
],
410414
[

tests/glpi-formcreator-migration-data.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ CREATE TABLE `glpi_plugin_formcreator_forms` (
157157
--
158158

159159
LOCK TABLES `glpi_plugin_formcreator_forms` WRITE;
160-
INSERT INTO `glpi_plugin_formcreator_forms` VALUES (4,'Test form migration for basic properties',0,0,'0','#999999','#e7e7e7',1,'','',0,1,'',0,0,0,0,0,0,1,'Test form migration for basic properties',1,'13d0d449-91f5039d-678638f86ff479.66501068'),(5,'Test form migration for basic properties with form category',0,0,'0','#999999','#e7e7e7',1,'','',1,1,'',0,0,0,0,0,0,1,'Test form migration for basic properties with form category',1,'13d0d449-91f5039d-67865f9ebd9f58.29603668'),(6,'Test form migration for sections',0,0,'0','#999999','#e7e7e7',1,'','',0,0,'',0,0,0,0,0,0,1,'Test form migration for sections',1,'13d0d449-91f5039d-67868bc224e124.20535500'),(7,'Test form migration for questions',0,0,'0','#999999','#e7e7e7',1,'','',0,0,'',0,0,0,0,0,0,1,'Test form migration for questions',1,'13d0d449-91f5039d-67877f5c4ee3c3.90813653'),(8,'Test form migration for access types with public access',0,0,'0','#999999','#e7e7e7',0,'','',0,0,'',0,0,0,0,0,0,1,'Test form migration for access types',1,'13d0d449-91f5039d-678f630f4a4737.71277458'),(9,'Test form migration for access types with private access',0,0,'0','#999999','#e7e7e7',1,'','',0,0,'',0,0,0,0,0,0,1,'Test form migration for access types with private access',1,'13d0d449-91f5039d-678f634493d8b7.87824440'),(10,'Test form migration for access types with restricted access',0,0,'0','#999999','#e7e7e7',2,'','',0,0,'',0,0,0,0,0,0,1,'Test form migration for access types with restricted access',1,'13d0d449-91f5039d-678f63553754a9.65767968'),(17,'Test form migration for targets',0,0,'0','#999999','#e7e7e7',1,'','',0,0,'',0,0,0,0,0,0,1,'Test form migration for target problem',1,'13d0d449-91f5039d-679209f7eaae69.42097688'),(19,'Test form migration for translations',0,0,'0','#999999','#e7e7e7',1,'This is a description to test the translation','',0,0,'',0,0,0,0,0,0,1,'Test form migration for translations',1,'18b24cbd-91f5039d-67e3d8f1d06864.47103399');
160+
INSERT INTO `glpi_plugin_formcreator_forms` VALUES (4,'Test form migration for basic properties',0,0,'0','#999999','#e7e7e7',1,'','',0,1,'',0,0,0,0,0,0,1,'Test form migration for basic properties',1,'13d0d449-91f5039d-678638f86ff479.66501068'),(5,'Test form migration for basic properties with form category',0,0,'0','#999999','#e7e7e7',1,'','',1,1,'',0,0,0,0,0,0,1,'Test form migration for basic properties with form category',1,'13d0d449-91f5039d-67865f9ebd9f58.29603668'),(6,'Test form migration for sections',0,0,'0','#999999','#e7e7e7',1,'','',0,0,'',0,0,0,0,0,0,1,'Test form migration for sections',1,'13d0d449-91f5039d-67868bc224e124.20535500'),(7,'Test form migration for questions',0,0,'0','#999999','#e7e7e7',1,'','',0,0,'',0,0,0,0,0,0,1,'Test form migration for questions',1,'13d0d449-91f5039d-67877f5c4ee3c3.90813653'),(8,'Test form migration for access types with public access',0,0,'0','#999999','#e7e7e7',0,'','',0,0,'',0,0,0,0,0,0,1,'Test form migration for access types',1,'13d0d449-91f5039d-678f630f4a4737.71277458'),(9,'Test form migration for access types with private access',0,0,'0','#999999','#e7e7e7',1,'','',0,0,'',0,0,0,0,0,0,1,'Test form migration for access types with private access',1,'13d0d449-91f5039d-678f634493d8b7.87824440'),(10,'Test form migration for access types with restricted access',0,0,'0','#999999','#e7e7e7',2,'','',0,0,'',0,0,0,0,0,0,1,'Test form migration for access types with restricted access',1,'13d0d449-91f5039d-678f63553754a9.65767968'),(17,'Test form migration for targets',0,0,'0','#999999','#e7e7e7',1,'','',0,0,'',0,0,0,0,0,0,1,'Test form migration for target problem',1,'13d0d449-91f5039d-679209f7eaae69.42097688'),(19,'Test form migration for translations',0,0,'0','#999999','#e7e7e7',1,'This is a description to test the translation','&#60;p&#62;This is a header to test the translation&#60;/p&#62;',0,0,'',0,0,0,0,0,0,1,'Test form migration for translations',1,'18b24cbd-91f5039d-67e3d8f1d06864.47103399');
161161
UNLOCK TABLES;
162162

163163
--

0 commit comments

Comments
 (0)