Skip to content

Commit c72901c

Browse files
committed
fix(targetticket): request source
better unit tests, and ignore unset request source in user's preferences
1 parent fb94035 commit c72901c

File tree

3 files changed

+42
-18
lines changed

3 files changed

+42
-18
lines changed

inc/abstractitiltarget.class.php

+5
Original file line numberDiff line numberDiff line change
@@ -2326,6 +2326,11 @@ public function getDefaultData(PluginFormcreatorFormAnswer $formanswer): array {
23262326
}
23272327

23282328
$data = array_merge($data, $predefined_fields);
2329+
2330+
if (($data['requesttypes_id'] ?? 0) == 0) {
2331+
unset($data['requesttypes_id']);
2332+
}
2333+
23292334
return $data;
23302335
}
23312336

inc/field/filefield.class.php

+8-9
Original file line numberDiff line numberDiff line change
@@ -238,15 +238,14 @@ private function saveDocument($file, $prefix) {
238238
return;
239239
}
240240

241-
$doc = new Document();
242-
$file_data = [];
243-
$file_data["name"] = Toolbox::addslashes_deep($form->getField('name') . ' - ' . $this->question->fields['name']);
244-
$file_data["entities_id"] = isset($_SESSION['glpiactive_entity'])
245-
? $_SESSION['glpiactive_entity']
246-
: $form->getField('entities_id');
247-
$file_data["is_recursive"] = $form->getField('is_recursive');
248-
$file_data['_filename'] = [$file];
249-
$file_data['_prefix_filename'] = [$prefix];
241+
$file_data = [
242+
'name' => Toolbox::addslashes_deep($form->fields['name'] . ' - ' . $this->question->fields['name']),
243+
'entities_id' => $_SESSION['glpiactive_entity'] ?? $form->getField('entities_id'),
244+
'is_recursive' => $form->getField('is_recursive'),
245+
'_filename' => [$file],
246+
'_prefix_filename' => [$prefix],
247+
];
248+
$doc = new Document();
250249
if ($docID = $doc->add($file_data)) {
251250
return $docID;
252251
}

tests/3-unit/PluginFormcreatorTargetTicket.php

+29-9
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
use PluginFormcreatorSection;
4949
use Profile;
5050
use Profile_User;
51+
use RequestType;
5152
use Session;
5253
use Supplier_Ticket;
5354
use TaskCategory;
@@ -77,6 +78,19 @@ public function beforeTestMethod($method) {
7778
}
7879
}
7980

81+
public function afterTestMethod($method) {
82+
parent::beforeTestMethod($method);
83+
switch ($method) {
84+
case 'testRequestSource':
85+
$requestType = new RequestType();
86+
$requestType->update([
87+
'id' => 1, // Helpdesk
88+
'is_helpdesk_default' => 1,
89+
]);
90+
break;
91+
}
92+
}
93+
8094
public function providerGetTypeName() {
8195
return [
8296
[
@@ -1732,7 +1746,7 @@ public function providerRequestSource() {
17321746
$testedClassName = $this->getTestedClassName();
17331747

17341748
$form = $this->getForm();
1735-
yield [
1749+
yield 'request source is Formcreator' =>[
17361750
'instance' => $this->getTargetTicket([
17371751
PluginFormcreatorForm::getForeignKeyField() => $form->getID(),
17381752
'source_rule' => $testedClassName::REQUESTSOURCE_FORMCREATOR,
@@ -1741,21 +1755,22 @@ public function providerRequestSource() {
17411755
'expected' => PluginFormcreatorCommon::getFormcreatorRequestTypeId()
17421756
];
17431757

1758+
$email_request_source = 2; // e-mail, see table glpi_requesttypes
17441759
$form = $this->getForm();
17451760
$user = $this->getGlpiCoreItem(User::class, [
17461761
'name' => 'user' . $this->getUniqueString(),
17471762
'password' => 'password',
17481763
'password2' => 'password',
1749-
'default_requesttypes_id' => 2, // e-mail, see table glpi_requesttypes
1764+
'default_requesttypes_id' => $email_request_source,
17501765
]);
17511766
$this->login($user->fields['name'], 'password');
17521767

1753-
yield [
1768+
yield 'request source is none; then set by user\'s preference' => [
17541769
'instance' => $this->getTargetTicket([
17551770
PluginFormcreatorForm::getForeignKeyField() => $form->getID(),
17561771
'source_rule' => $testedClassName::REQUESTSOURCE_NONE
17571772
]),
1758-
'expected' => 2
1773+
'expected' => $email_request_source,
17591774
];
17601775

17611776
$form = $this->getForm();
@@ -1766,13 +1781,18 @@ public function providerRequestSource() {
17661781
'default_requesttypes_id' => 0, // unset
17671782
]);
17681783
$this->login($user->fields['name'], 'password');
1784+
$requestType = new RequestType();
1785+
$requestType->update([
1786+
'id' => 3, // Phone
1787+
'is_helpdesk_default' => 1,
1788+
]);
17691789

1770-
yield [
1790+
yield 'request source is none; then set by GLPI default' => [
17711791
'instance' => $this->getTargetTicket([
17721792
PluginFormcreatorForm::getForeignKeyField() => $form->getID(),
17731793
'source_rule' => $testedClassName::REQUESTSOURCE_NONE,
17741794
]),
1775-
'expected' => 0 // Unset (see Setup > General > Default values)
1795+
'expected' => 3 // Unset (see Setup > General > Default values)
17761796
];
17771797

17781798
$form = $this->getForm();
@@ -1784,16 +1804,16 @@ public function providerRequestSource() {
17841804
$this->getGlpiCoreItem(TicketTemplatePredefinedField::getType(), [
17851805
'tickettemplates_id' => $ticketTemplate->getID(),
17861806
'num' => 9, // RequestType
1787-
'value' => 1, // Helpdesk
1807+
'value' => 4, // Direct
17881808
]);
17891809

1790-
yield [
1810+
yield 'request source is none; then set by target\'s template' => [
17911811
'instance' => $this->getTargetTicket([
17921812
PluginFormcreatorForm::getForeignKeyField() => $form->getID(),
17931813
'source_rule' => $testedClassName::REQUESTSOURCE_NONE,
17941814
'tickettemplates_id' => $ticketTemplate->getID(),
17951815
]),
1796-
'expected' => 1 // Helpdesk (see Setup > General > Default values)
1816+
'expected' => 4 // Helpdesk (see Setup > General > Default values)
17971817
];
17981818
}
17991819

0 commit comments

Comments
 (0)