Skip to content

Commit 7196399

Browse files
committed
Merge branch 'support/2.13.0' into support/2.14.0
2 parents e44b453 + 63cb85f commit 7196399

9 files changed

Lines changed: 149 additions & 9 deletions

inc/abstractitiltarget.class.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,12 +443,20 @@ protected function setTargetUrgency($data, $formanswer) {
443443
}
444444
if (!is_null($urgency) && $urgency != 0) {
445445
$data['urgency'] = $urgency;
446-
$data['priority'] = CommonITILObject::computePriority($data['urgency'], $data['impact']);;
447446
}
448447

449448
return $data;
450449
}
451450

451+
protected function setTargetPriority(array $data): array {
452+
// Remove default priority so it can be computed
453+
if (isset($data['urgency']) || isset($data['impact'])) {
454+
unset($data['priority']);
455+
}
456+
return $data;
457+
}
458+
459+
452460
/**
453461
* find all actors and prepare data for the ticket being created
454462
*/

inc/targetchange.class.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,7 @@ public function save(PluginFormcreatorFormAnswer $formanswer): ?CommonDBTM {
675675
$data[$changeField] = $formanswer->parseTags($data[$changeField], $this, $changeField == 'content');
676676
}
677677

678-
$data['_users_id_recipient'] = $_SESSION['glpiID'];
678+
$data['_users_id_recipient'] = $formanswer->fields['requester_id'];
679679

680680
$this->prepareActors($form, $formanswer);
681681

@@ -698,6 +698,7 @@ public function save(PluginFormcreatorFormAnswer $formanswer): ?CommonDBTM {
698698
$data = $this->setSLA($data, $formanswer);
699699
$data = $this->setOLA($data, $formanswer);
700700
$data = $this->setTargetUrgency($data, $formanswer);
701+
$data = $this->setTargetPriority($data, $formanswer);
701702
$data = $this->setTargetValidation($data, $formanswer);
702703

703704
$data = $this->requesters + $this->observers + $this->assigned + $this->assignedSuppliers + $data;

inc/targetproblem.class.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ public function save(PluginFormcreatorFormAnswer $formanswer): ?CommonDBTM {
194194
$data[$problemFields] = $formanswer->parseTags($data[$problemFields], $this, $problemFields == 'content');
195195
}
196196

197-
$data['_users_id_recipient'] = $_SESSION['glpiID'];
197+
$data['_users_id_recipient'] = $formanswer->fields['requester_id'];
198198

199199
$this->prepareActors($form, $formanswer);
200200

@@ -214,6 +214,7 @@ public function save(PluginFormcreatorFormAnswer $formanswer): ?CommonDBTM {
214214

215215
$data = $this->setTargetEntity($data, $formanswer, $requesters_id);
216216
$data = $this->setTargetUrgency($data, $formanswer);
217+
$data = $this->setTargetPriority($data, $formanswer);
217218

218219
$data = $this->requesters + $this->observers + $this->assigned + $this->assignedSuppliers + $data;
219220
$data = $this->requesterGroups + $this->observerGroups + $this->assignedGroups + $data;

inc/targetticket.class.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -886,6 +886,7 @@ public function save(PluginFormcreatorFormAnswer $formanswer): ?CommonDBTM {
886886
$data = $this->setSLA($data, $formanswer);
887887
$data = $this->setOLA($data, $formanswer);
888888
$data = $this->setTargetUrgency($data, $formanswer);
889+
$data = $this->setTargetPriority($data, $formanswer);
889890
$data = $this->setTargetLocation($data, $formanswer);
890891
$data = $this->setTargetContract($data, $formanswer);
891892
$data = $this->setTargetAssociatedItem($data, $formanswer);

tests/3-unit/PluginFormcreatorTargetChange.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
*/
3131

3232
namespace tests\units;
33-
use GlpiPlugin\Formcreator\Tests\CommonTargetTestCase;
33+
use GlpiPlugin\Formcreator\Tests\AbstractItilTargetTestCase;
3434

35-
class PluginFormcreatorTargetChange extends CommonTargetTestCase {
35+
class PluginFormcreatorTargetChange extends AbstractItilTargetTestCase {
3636

3737
public function beforeTestMethod($method) {
3838
parent::beforeTestMethod($method);

tests/3-unit/PluginFormcreatorTargetProblem.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
*/
3131

3232
namespace tests\units;
33-
use GlpiPlugin\Formcreator\Tests\CommonTargetTestCase;
33+
use GlpiPlugin\Formcreator\Tests\AbstractItilTargetTestCase;
3434

35-
class PluginFormcreatorTargetProblem extends CommonTargetTestCase {
35+
class PluginFormcreatorTargetProblem extends AbstractItilTargetTestCase {
3636

3737
public function beforeTestMethod($method) {
3838
parent::beforeTestMethod($method);

tests/3-unit/PluginFormcreatorTargetTicket.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
use CommonDBTM;
3434
use Computer;
3535
use Entity;
36-
use GlpiPlugin\Formcreator\Tests\CommonTargetTestCase;
36+
use GlpiPlugin\Formcreator\Tests\AbstractItilTargetTestCase;
3737
use Group_Ticket;
3838
use Item_Ticket;
3939
use ITILCategory;
@@ -60,7 +60,7 @@
6060
use Toolbox;
6161
use User;
6262

63-
class PluginFormcreatorTargetTicket extends CommonTargetTestCase {
63+
class PluginFormcreatorTargetTicket extends AbstractItilTargetTestCase {
6464

6565
public function beforeTestMethod($method) {
6666
parent::beforeTestMethod($method);
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
<?php
2+
/**
3+
* ---------------------------------------------------------------------
4+
* Formcreator is a plugin which allows creation of custom forms of
5+
* easy access.
6+
* ---------------------------------------------------------------------
7+
* LICENSE
8+
*
9+
* This file is part of Formcreator.
10+
*
11+
* Formcreator is free software; you can redistribute it and/or modify
12+
* it under the terms of the GNU General Public License as published by
13+
* the Free Software Foundation; either version 2 of the License, or
14+
* (at your option) any later version.
15+
*
16+
* Formcreator is distributed in the hope that it will be useful,
17+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
18+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19+
* GNU General Public License for more details.
20+
*
21+
* You should have received a copy of the GNU General Public License
22+
* along with Formcreator. If not, see <http://www.gnu.org/licenses/>.
23+
* ---------------------------------------------------------------------
24+
* @copyright Copyright © 2011 - 2021 Teclib'
25+
* @license http://www.gnu.org/licenses/gpl.txt GPLv3+
26+
* @link https://github.com/pluginsGLPI/formcreator/
27+
* @link https://pluginsglpi.github.io/formcreator/
28+
* @link http://plugins.glpi-project.org/#/plugin/formcreator
29+
* ---------------------------------------------------------------------
30+
*/
31+
32+
namespace GlpiPlugin\Formcreator\Tests;
33+
34+
use PluginFormcreatorFormanswer;
35+
36+
abstract class AbstractItilTargetTestCase extends CommonTargetTestCase {
37+
public function beforeTestMethod($method) {
38+
parent::beforeTestMethod($method);
39+
switch ($method) {
40+
case 'testSetTargetPriority':
41+
$this->boolean($this->login('glpi', 'glpi'))->isTrue();
42+
break;
43+
}
44+
}
45+
46+
public function setTargetPriorityProvider() {
47+
$form = $this->getForm();
48+
$target = $this->newTestedInstance();
49+
$target->add([
50+
'name' => $this->getUniqueString(),
51+
'plugin_formcreator_forms_id' => $form->getID(),
52+
'urgency_rule' => \PluginFormcreatorTargetTicket::URGENCY_RULE_NONE,
53+
]);
54+
55+
yield 'no urgency and no template' => [
56+
'formanswerData' => [
57+
$form::getForeignKeyField() => $form->getID(),
58+
],
59+
'expected' => 3
60+
];
61+
62+
$testedClassName = $this->getTestedClassName();
63+
$section = $this->getSection([
64+
$form::getForeignKeyField() => $form->getID(),
65+
]);
66+
$question = $this->getQuestion([
67+
'plugin_formcreator_sections_id' => $section->getID(),
68+
'fieldtype' => 'urgency',
69+
]);
70+
$target->update([
71+
'id' => $target->getID(),
72+
'urgency_rule' => $testedClassName::URGENCY_RULE_SPECIFIC,
73+
'_urgency_specific' => $question->getID(),
74+
]);
75+
76+
yield 'urgency from question' => [
77+
'formanswerData' => [
78+
$form::getForeignKeyField() => $form->getID(),
79+
'formcreator_field_' . $question->getID() => '5',
80+
],
81+
'expected' => 4, // Urgency 5 and impact 3 gives priority 4 with default matrix
82+
];
83+
84+
// Ugly, but GLPI itself does the same internally...
85+
$templateType = $target->getTargetItemtypeName() . 'Template';
86+
$predefinedType = $target->getTargetItemtypeName() . 'TemplatePredefinedField';
87+
88+
$template = $this->getGlpiCoreItem($templateType, [
89+
'name' => $this->getUniqueString(),
90+
]);
91+
$predefined = new $predefinedType();
92+
$predefined->add([
93+
$templateType::getForeignKeyField() => $template->getID(),
94+
'num' => 11, // Impact search option ID,
95+
'value' => '5', // Very high impact
96+
]);
97+
$target->update([
98+
'id' => $target->getID(),
99+
'urgency_rule' => $testedClassName::URGENCY_RULE_NONE,
100+
'_urgency_question' => '0',
101+
$templateType::getForeignKeyField() => $template->getID(),
102+
]);
103+
104+
yield 'impact from template' => [
105+
'formanswerData' => [
106+
$form::getForeignKeyField() => $form->getID(),
107+
],
108+
'expected' => 4, // Urgency 3 and impact 5 gives priority 4 with default matrix
109+
];
110+
}
111+
112+
/**
113+
* @dataProvider setTargetPriorityProvider
114+
*/
115+
public function testSetTargetPriority($formanswerData, $expected) {
116+
$formanswer = new PluginFormcreatorFormanswer();
117+
$formanswer->add($formanswerData);
118+
$_SESSION['MESSAGE_AFTER_REDIRECT'] = [];
119+
$this->boolean($formanswer->isNewItem())->isFalse(json_encode($_SESSION['MESSAGE_AFTER_REDIRECT'], JSON_PRETTY_PRINT));
120+
$generatedTarget = $formanswer->targetList[0]; // Assume the target has been generated
121+
$generatedTarget->fields['priority'] = $expected;
122+
}
123+
}

tests/src/CommonTestCase.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,8 @@ protected function getTargetTicket($input = []) {
279279

280280
$targetTicket = new \PluginFormcreatorTargetTicket();
281281
$targetTicket->add($input);
282+
$this->boolean($targetTicket->isNewItem())->isFalse();
283+
$targetTicket->getFromDB($targetTicket->getID());
282284

283285
return $targetTicket;
284286
}
@@ -295,6 +297,8 @@ protected function getTargetChange($input = []) {
295297

296298
$targetChange = new \PluginFormcreatorTargetChange();
297299
$targetChange->add($input);
300+
$this->boolean($targetChange->isNewItem())->isFalse();
301+
$targetChange->getFromDB($targetChange->getID());
298302

299303
return $targetChange;
300304
}
@@ -319,6 +323,8 @@ protected function getTargetProblem($input = []) {
319323

320324
$targetProblem = new \PluginFormcreatorTargetProblem();
321325
$targetProblem->add($input);
326+
$this->boolean($targetProblem->isNewItem())->isFalse();
327+
$targetProblem->getFromDB($targetProblem->getID());
322328

323329
return $targetProblem;
324330
}

0 commit comments

Comments
 (0)