From a49cc6d9e299d95b4f1b695f4ac7f8d701903435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guy=20Couronn=C3=A9?= Date: Fri, 12 Jul 2024 07:54:28 +0200 Subject: [PATCH 1/2] :sparkles: Allow AttributeSet in XML sample file In XML Data Loader, manage AttributeSet class and its children to be imported , in sample XML files. --- setup/xmldataloader.class.inc.php | 22 +++++++++++++++++-- .../unitary-tests/core/XMLDataLoaderTest.php | 12 ++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/setup/xmldataloader.class.inc.php b/setup/xmldataloader.class.inc.php index c26d5c75e2..e19e6e74d1 100644 --- a/setup/xmldataloader.class.inc.php +++ b/setup/xmldataloader.class.inc.php @@ -278,9 +278,27 @@ function LoadFile($sFilePath, $bUpdateKeyCacheOnly = false, bool $bSearch = fals $oDoc = new ormDocument($data, $sMimeType, $sFileName); $oTargetObj->Set($sAttCode, $oDoc); } - elseif ($oAttDef instanceof AttributeTagSet) + elseif ($oAttDef instanceof AttributeSet) { - // TODO + $value = (string)$oSubNode; + + if ($value == '') + { + $value = $oAttDef->GetNullValue(); + } + else + { + $value = $oAttDef->MakeRealValue($value, $oTargetObj); + } + $res = $oTargetObj->CheckValue($sAttCode, $value); + if ($res !== true) + { + // $res contains the error description + $sMsg = "Value not allowed - $sClass/$iSrcId - $sAttCode: '".$oSubNode."' ; $res"; + SetupLog::Error($sMsg); + $this->m_aErrors[] = $sMsg; + } + $oTargetObj->Set($sAttCode, $value); } else { diff --git a/tests/php-unit-tests/unitary-tests/core/XMLDataLoaderTest.php b/tests/php-unit-tests/unitary-tests/core/XMLDataLoaderTest.php index 9a2a330fcc..9d2e225f45 100644 --- a/tests/php-unit-tests/unitary-tests/core/XMLDataLoaderTest.php +++ b/tests/php-unit-tests/unitary-tests/core/XMLDataLoaderTest.php @@ -103,6 +103,18 @@ public function testDataLoader() no + + Contact updated + + GUI:Console + class restriction: Contact + allow_no_channel + Contact + SELECT `Person` FROM Person AS `Person` WHERE ((`status` = 'active') AND ((`org_id` = :current_contact->org_id) OR (`org_id` = :this->org_id))) + email + TriggerOnObjectUpdate + Contact updated + XML; $this->CreateFromXMLString($sXML); From 64c6cb245383bebcb0693cd08619dd551ac44061 Mon Sep 17 00:00:00 2001 From: jf-cbd Date: Thu, 12 Dec 2024 17:49:47 +0100 Subject: [PATCH 2/2] Refactoring to compute MakeRealValue on default type + add test on multiple target_attcodes --- setup/xmldataloader.class.inc.php | 25 ++----------------- .../unitary-tests/core/XMLDataLoaderTest.php | 4 ++- 2 files changed, 5 insertions(+), 24 deletions(-) diff --git a/setup/xmldataloader.class.inc.php b/setup/xmldataloader.class.inc.php index e19e6e74d1..5b516dcb01 100644 --- a/setup/xmldataloader.class.inc.php +++ b/setup/xmldataloader.class.inc.php @@ -278,28 +278,6 @@ function LoadFile($sFilePath, $bUpdateKeyCacheOnly = false, bool $bSearch = fals $oDoc = new ormDocument($data, $sMimeType, $sFileName); $oTargetObj->Set($sAttCode, $oDoc); } - elseif ($oAttDef instanceof AttributeSet) - { - $value = (string)$oSubNode; - - if ($value == '') - { - $value = $oAttDef->GetNullValue(); - } - else - { - $value = $oAttDef->MakeRealValue($value, $oTargetObj); - } - $res = $oTargetObj->CheckValue($sAttCode, $value); - if ($res !== true) - { - // $res contains the error description - $sMsg = "Value not allowed - $sClass/$iSrcId - $sAttCode: '".$oSubNode."' ; $res"; - SetupLog::Error($sMsg); - $this->m_aErrors[] = $sMsg; - } - $oTargetObj->Set($sAttCode, $value); - } else { $value = (string)$oSubNode; @@ -307,8 +285,9 @@ function LoadFile($sFilePath, $bUpdateKeyCacheOnly = false, bool $bSearch = fals if ($value == '') { $value = $oAttDef->GetNullValue(); + } else { + $value = $oAttDef->MakeRealValue($value, $oTargetObj); } - $res = $oTargetObj->CheckValue($sAttCode, $value); if ($res !== true) { diff --git a/tests/php-unit-tests/unitary-tests/core/XMLDataLoaderTest.php b/tests/php-unit-tests/unitary-tests/core/XMLDataLoaderTest.php index 9d2e225f45..bb7ccaf9af 100644 --- a/tests/php-unit-tests/unitary-tests/core/XMLDataLoaderTest.php +++ b/tests/php-unit-tests/unitary-tests/core/XMLDataLoaderTest.php @@ -111,7 +111,7 @@ public function testDataLoader() allow_no_channel Contact SELECT `Person` FROM Person AS `Person` WHERE ((`status` = 'active') AND ((`org_id` = :current_contact->org_id) OR (`org_id` = :this->org_id))) - email + email,name TriggerOnObjectUpdate Contact updated @@ -120,8 +120,10 @@ public function testDataLoader() $this->CreateFromXMLString($sXML); $oPerson = MetaModel::GetObjectByName('Person', 'Zacharie Zmillpatt'); + $oTrigger = MetaModel::GetObjectByName('TriggerOnObjectUpdate', 'Contact updated'); $this->assertEquals('Zanzibar', $oPerson->Get('location_id_friendlyname')); $this->assertEquals('ZuperTest', $oPerson->Get('org_id_friendlyname')); + $this->assertEquals('email, name', (string)$oTrigger->Get('target_attcodes')); // should add space after comma } } \ No newline at end of file