Skip to content

Commit 2d28fe3

Browse files
committed
fix(form): get form from question ID
Signed-off-by: Thierry Bugier <[email protected]>
1 parent 4afe8b3 commit 2d28fe3

File tree

2 files changed

+61
-4
lines changed

2 files changed

+61
-4
lines changed

inc/form.class.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1392,7 +1392,7 @@ public function post_purgeItem() {
13921392
*/
13931393
private function updateValidators() {
13941394
if (!isset($this->input['validation_required'])) {
1395-
return true;
1395+
return;
13961396
}
13971397

13981398
$form_validator = new PluginFormcreatorForm_Validator();
@@ -1406,11 +1406,11 @@ private function updateValidators() {
14061406
switch ($this->input['validation_required']) {
14071407
case PluginFormcreatorForm_Validator::VALIDATION_USER:
14081408
$validators = $this->input['_validator_users'];
1409-
$validatorItemtype = 'User';
1409+
$validatorItemtype = User::class;
14101410
break;
14111411
case PluginFormcreatorForm_Validator::VALIDATION_GROUP:
14121412
$validators = $this->input['_validator_groups'];
1413-
$validatorItemtype = 'Group';
1413+
$validatorItemtype = Group::class;
14141414
break;
14151415
}
14161416
foreach ($validators as $itemId) {
@@ -1484,6 +1484,7 @@ public function increaseUsageCount() {
14841484
*/
14851485
public function getByQuestionId($questionId) {
14861486
$formTable = PluginFormcreatorForm::getTable();
1487+
$formFk = PluginFormcreatorForm::getForeignKeyField();
14871488
$sectionTable = PluginFormcreatorSection::getTable();
14881489
$sectionFk = PluginFormcreatorSection::getForeignKeyField();
14891490
$questionTable = PluginFormcreatorQuestion::getTable();
@@ -1492,7 +1493,7 @@ public function getByQuestionId($questionId) {
14921493
$sectionTable => [
14931494
'FKEY' => [
14941495
$formTable => 'id',
1495-
$sectionTable => $sectionFk,
1496+
$sectionTable => $formFk,
14961497
]
14971498
],
14981499
$questionTable => [

tests/suite-unit/PluginFormcreatorForm.php

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,62 @@ public function testPost_purgeItem() {
295295
$this->boolean($output)->isFalse();
296296
}
297297

298+
public function testUpdateValidators() {
299+
$form = $this->getForm();
300+
301+
$formValidator = new \PluginFormcreatorForm_Validator();
302+
$rows = $formValidator->find([
303+
'plugin_formcreator_forms_id' => $form->getID(),
304+
]);
305+
$this->array($rows)->hasSize(0);
306+
307+
$form = $this->getForm([
308+
'validation_required' => \PluginFormcreatorForm_Validator::VALIDATION_USER,
309+
'_validator_users' => ['2'], // glpi account
310+
]);
311+
312+
$rows = $formValidator->find([
313+
'plugin_formcreator_forms_id' => $form->getID(),
314+
]);
315+
$this->array($rows)->hasSize(1);
316+
$formValidator->getFromResultSet(array_pop($rows));
317+
$this->integer((int) $formValidator->fields['items_id'])->isEqualTo(2);
318+
$this->string( $formValidator->fields['itemtype'])->isEqualTo(\User::class);
319+
$this->integer((int) $formValidator->fields['plugin_formcreator_forms_id'])->isEqualTo($form->getID());
320+
321+
$form = $this->getForm([
322+
'validation_required' => \PluginFormcreatorForm_Validator::VALIDATION_GROUP,
323+
'_validator_groups' => ['1'], // a group ID (not created in this test)
324+
]);
325+
$rows = $formValidator->find([
326+
'plugin_formcreator_forms_id' => $form->getID(),
327+
]);
328+
$this->array($rows)->hasSize(1);
329+
$formValidator->getFromResultSet(array_pop($rows));
330+
$this->integer((int) $formValidator->fields['items_id'])->isEqualTo(1);
331+
$this->string( $formValidator->fields['itemtype'])->isEqualTo(\Group::class);
332+
$this->integer((int) $formValidator->fields['plugin_formcreator_forms_id'])->isEqualTo($form->getID());
333+
}
334+
335+
public function testIncreateUsageCount() {
336+
$form = $this->getForm();
337+
$this->integer((int) $form->fields['usage_count'])->isEqualTo(0);
338+
339+
$form->increaseUsageCount();
340+
$this->integer((int) $form->fields['usage_count'])->isEqualTo(1);
341+
}
342+
343+
public function testGetByQuestionId() {
344+
$question = $this->getQuestion();
345+
$section = new \PluginFormcreatorSection();
346+
$section->getFromDB($question->fields['plugin_formcreator_sections_id']) ;
347+
$expected = $section->fields['plugin_formcreator_forms_id'];
348+
$form = $this->newTestedInstance();
349+
$form->getByQuestionId($question->getID());
350+
351+
$this->integer((int) $form->getID())->isEqualTo($expected);
352+
}
353+
298354
public function testCreateValidationNotification() {
299355
global $DB;
300356

0 commit comments

Comments
 (0)