Merge remote-tracking branch 'origin/support/3.1' into develop

This commit is contained in:
Pierre Goiffon
2023-07-18 14:17:58 +02:00

View File

@@ -180,7 +180,7 @@ class BulkChangeExtKeyTest extends ItopDataTestCase {
); );
$this->performBulkChangeTest( $this->performBulkChangeTest(
"invalid value for attribute", "Invalid value for attribute",
"Ambiguous: found 2 objects", "Ambiguous: found 2 objects",
null, null,
$bIsRackReconKey, $bIsRackReconKey,
@@ -206,8 +206,7 @@ class BulkChangeExtKeyTest extends ItopDataTestCase {
$aCsvData = [["UnexistingRackDescription"]]; $aCsvData = [["UnexistingRackDescription"]];
$aExtKeys = ["org_id" => ["name" => 0], "rack_id" => ["name" => 1, "description" => 3]]; $aExtKeys = ["org_id" => ["name" => 0], "rack_id" => ["name" => 1, "description" => 3]];
$sSearchLinkUrl = 'UI.php?operation=search&filter=%5B%22SELECT+%60Rack%60+FROM+Rack+AS+%60Rack%60+WHERE+%28%28%60Rack%60.%60name%60+%3D+%3Aname%29+AND+%28%60Rack%60.%60description%60+%3D+%3Adescription%29%29%22%2C%7B%22name%22%3A%22UnexistingRack%22%2C%22description%22%3A%22UnexistingRackDescription%22%7D%2C%5B%5D%5D' $sSearchLinkUrl = 'UI.php?operation=search&filter='.\rawurlencode('%5B%22SELECT+%60Rack%60+FROM+Rack+AS+%60Rack%60+WHERE+%28%28%60Rack%60.%60name%60+%3D+%3Aname%29+AND+%28%60Rack%60.%60description%60+%3D+%3Adescription%29%29%22%2C%7B%22name%22%3A%22UnexistingRack%22%2C%22description%22%3A%22UnexistingRackDescription%22%7D%2C%5B%5D%5D');
;
$this->performBulkChangeTest( $this->performBulkChangeTest(
"No match for value 'UnexistingRack UnexistingRackDescription'", "No match for value 'UnexistingRack UnexistingRackDescription'",
"Some possible 'Rack' value(s): RackTest1 RackTest1Desc, RackTest2 RackTest2Desc, RackTest3 RackTest3Desc...", "Some possible 'Rack' value(s): RackTest1 RackTest1Desc, RackTest2 RackTest2Desc, RackTest3 RackTest3Desc...",
@@ -238,7 +237,7 @@ class BulkChangeExtKeyTest extends ItopDataTestCase {
public function performBulkChangeTest($sExpectedDisplayableValue, $sExpectedDescription, $oOrg, $bIsRackReconKey, public function performBulkChangeTest($sExpectedDisplayableValue, $sExpectedDescription, $oOrg, $bIsRackReconKey,
$aAdditionalCsvData=null, $aExtKeys=null, $sSearchLinkUrl=null, $sError="Object not found") { $aAdditionalCsvData=null, $aExtKeys=null, $sSearchLinkUrl=null, $sError="Object not found") {
if ($sSearchLinkUrl===null){ if ($sSearchLinkUrl===null){
$sSearchLinkUrl = 'UI.php?operation=search&filter=%5B%22SELECT+%60Rack%60+FROM+Rack+AS+%60Rack%60+WHERE+%28%60Rack%60.%60name%60+%3D+%3Aname%29%22%2C%7B%22name%22%3A%22UnexistingRack%22%7D%2C%5B%5D%5D'; $sSearchLinkUrl = 'UI.php?operation=search&filter='.rawurlencode('%5B%22SELECT+%60Rack%60+FROM+Rack+AS+%60Rack%60+WHERE+%28%60Rack%60.%60name%60+%3D+%3Aname%29%22%2C%7B%22name%22%3A%22UnexistingRack%22%7D%2C%5B%5D%5D');
} }
if (is_null($oOrg)){ if (is_null($oOrg)){
$iOrgId = $this->getTestOrgId(); $iOrgId = $this->getTestOrgId();
@@ -285,60 +284,65 @@ class BulkChangeExtKeyTest extends ItopDataTestCase {
CMDBSource::Query('START TRANSACTION'); CMDBSource::Query('START TRANSACTION');
//change value during the test try {
$db_core_transactions_enabled=MetaModel::GetConfig()->Get('db_core_transactions_enabled');
MetaModel::GetConfig()->Set('db_core_transactions_enabled',false);
$this->debug("aCsvData:".json_encode($aCsvData[0])); //change value during the test
$this->debug("aReconcilKeys:". var_export($aReconcilKeys)); $db_core_transactions_enabled = MetaModel::GetConfig()->Get('db_core_transactions_enabled');
$oBulk = new \BulkChange( MetaModel::GetConfig()->Set('db_core_transactions_enabled', false);
"Server",
$aCsvData, $this->debug("aCsvData:" . json_encode($aCsvData[0]));
$aAttributes, $this->debug("aReconcilKeys:" . var_export($aReconcilKeys));
$aExtKeys, $oBulk = new \BulkChange(
$aReconcilKeys, "Server",
null, $aCsvData,
null, $aAttributes,
"Y-m-d H:i:s", // date format $aExtKeys,
true // localize $aReconcilKeys,
); null,
$this->debug("BulkChange:"); null,
$oChange = \CMDBObject::GetCurrentChange(); "Y-m-d H:i:s", // date format
$this->debug("GetCurrentChange:"); true // localize
$aRes = $oBulk->Process($oChange); );
$this->debug("Process:"); $this->debug("BulkChange:");
static::assertNotNull($aRes); $oChange = \CMDBObject::GetCurrentChange();
$this->debug("assertNotNull:"); $this->debug("GetCurrentChange:");
var_dump($aRes); $aRes = $oBulk->Process($oChange);
foreach ($aRes as $aRow) { $this->debug("Process:");
if (array_key_exists('__STATUS__', $aRow)) { static::assertNotNull($aRes);
$sStatus = $aRow['__STATUS__']; $this->debug("assertNotNull:");
$this->debug("sStatus:".$sStatus->GetDescription()); var_dump($aRes);
$this->assertEquals($aResult["__STATUS__"], $sStatus->GetDescription()); foreach ($aRes as $aRow) {
foreach ($aRow as $i => $oCell) { if (array_key_exists('__STATUS__', $aRow)) {
if ($i != "finalclass" && $i != "__STATUS__" && $i != "__ERRORS__") { $sStatus = $aRow['__STATUS__'];
$this->debug("i:".$i); $this->debug("sStatus:" . $sStatus->GetDescription());
$this->debug('GetDisplayableValue:'.$oCell->GetDisplayableValue()); $this->assertEquals($aResult["__STATUS__"], $sStatus->GetDescription());
if (array_key_exists($i,$aResult)) { foreach ($aRow as $i => $oCell) {
$this->debug("aResult:".var_export($aResult[$i])); if ($i != "finalclass" && $i != "__STATUS__" && $i != "__ERRORS__") {
if ($oCell instanceof \CellStatus_SearchIssue || $this->debug("i:" . $i);
$oCell instanceof \CellStatus_Ambiguous) { $this->debug('GetDisplayableValue:' . $oCell->GetDisplayableValue());
$this->assertEquals($aResult[$i][0], $oCell->GetDisplayableValue(), if (array_key_exists($i, $aResult)) {
"failure on ".get_class($oCell).' cell type'); $this->debug("aResult:" . var_export($aResult[$i]));
$this->assertEquals($sSearchLinkUrl, $oCell->GetSearchLinkUrl(), if ($oCell instanceof \CellStatus_SearchIssue ||
"failure on ".get_class($oCell).' cell type'); $oCell instanceof \CellStatus_Ambiguous) {
$this->assertEquals($aResult[$i][1], $oCell->GetDescription(), $this->assertEquals($aResult[$i][0], $oCell->GetDisplayableValue(),
"failure on ".get_class($oCell).' cell type'); "failure on " . get_class($oCell) . ' cell type');
$this->assertEquals($sSearchLinkUrl, $oCell->GetSearchLinkUrl(),
"failure on " . get_class($oCell) . ' cell type');
$this->assertEquals($aResult[$i][1], $oCell->GetDescription(),
"failure on " . get_class($oCell) . ' cell type');
}
} }
} else if ($i === "__ERRORS__") {
$sErrors = array_key_exists("__ERRORS__", $aResult) ? $aResult["__ERRORS__"] : "";
$this->assertEquals($sErrors, $oCell->GetDescription());
} }
} else if ($i === "__ERRORS__") {
$sErrors = array_key_exists("__ERRORS__", $aResult) ? $aResult["__ERRORS__"] : "";
$this->assertEquals( $sErrors, $oCell->GetDescription());
} }
$this->assertEquals($aResult[0], $aRow[0]->GetDisplayableValue());
} }
$this->assertEquals( $aResult[0], $aRow[0]->GetDisplayableValue());
} }
MetaModel::GetConfig()->Set('db_core_transactions_enabled', $db_core_transactions_enabled);
} finally {
CMDBSource::Query('ROLLBACK');
} }
MetaModel::GetConfig()->Set('db_core_transactions_enabled',$db_core_transactions_enabled);
} }
} }