From c66b0bea41cf7e0c6ebceed2a5eebfb5963f0c79 Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Tue, 2 Oct 2018 18:06:23 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B0931=20fix=20PhpUnit=20tests=20for=20TagS?= =?UTF-8?q?ets=20(default=20datamodel=20doesn't=20have=20anymore=20Ticket.?= =?UTF-8?q?tagfield,=20but=20FAQ.domains)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/ItopDataTestCase.php | 748 ++++++++++-------- .../search/CriterionConversionTest.php | 20 +- test/core/DBSearchCommitTest.php | 24 +- test/core/TagSetFieldDataTest.php | 18 +- test/core/ormTagSetTest.php | 2 +- 5 files changed, 436 insertions(+), 376 deletions(-) diff --git a/test/ItopDataTestCase.php b/test/ItopDataTestCase.php index 7711ed32c..ab6e90e26 100644 --- a/test/ItopDataTestCase.php +++ b/test/ItopDataTestCase.php @@ -18,6 +18,7 @@ // namespace Combodo\iTop\Test\UnitTest; + /** * Created by PhpStorm. * User: Eric @@ -45,8 +46,9 @@ use VirtualHost; use VirtualMachine; -define('TAG_CLASS', 'Ticket'); -define('TAG_ATTCODE', 'tagfield'); +/** @see \Combodo\iTop\Test\UnitTest\ItopDataTestCase::CreateObjectWithTagSet() */ +define('TAG_CLASS', 'FAQ'); +define('TAG_ATTCODE', 'domains'); /** * @runTestsInSeparateProcesses @@ -69,24 +71,24 @@ class ItopDataTestCase extends ItopTestCase parent::setUp(); //require_once(APPROOT.'/application/startup.inc.php'); - require_once(APPROOT.'/core/cmdbobject.class.inc.php'); - require_once(APPROOT.'/application/utils.inc.php'); - require_once(APPROOT.'/core/contexttag.class.inc.php'); - $sEnv = 'production'; - $sConfigFile = APPCONF.$sEnv.'/'.ITOP_CONFIG_FILE; - MetaModel::Startup($sConfigFile, false /* $bModelOnly */, true /* $bAllowCache */, false /* $bTraceSourceFiles */, $sEnv); + require_once(APPROOT.'/core/cmdbobject.class.inc.php'); + require_once(APPROOT.'/application/utils.inc.php'); + require_once(APPROOT.'/core/contexttag.class.inc.php'); + $sEnv = 'production'; + $sConfigFile = APPCONF.$sEnv.'/'.ITOP_CONFIG_FILE; + MetaModel::Startup($sConfigFile, false /* $bModelOnly */, true /* $bAllowCache */, false /* $bTraceSourceFiles */, $sEnv); - if (static::USE_TRANSACTION) - { - CMDBSource::Query('START TRANSACTION'); - } + if (static::USE_TRANSACTION) + { + CMDBSource::Query('START TRANSACTION'); + } $this->CreateTestOrganization(); } - /** - * @throws Exception - */ - protected function tearDown() + /** + * @throws Exception + */ + protected function tearDown() { if (static::USE_TRANSACTION) { @@ -97,7 +99,7 @@ class ItopDataTestCase extends ItopTestCase { $this->debug(""); $this->aCreatedObjects = array_reverse($this->aCreatedObjects); - foreach($this->aCreatedObjects as $oObject) + foreach ($this->aCreatedObjects as $oObject) { /** @var DBObject $oObject */ try @@ -106,7 +108,8 @@ class ItopDataTestCase extends ItopTestCase $iKey = $oObject->GetKey(); $this->debug("Removing $sClass::$iKey"); $oObject->DBDelete(); - } catch (Exception $e) + } + catch (Exception $e) { $this->debug($e->getMessage()); } @@ -122,29 +125,31 @@ class ItopDataTestCase extends ItopTestCase return $this->iTestOrgId; } - ///////////////////////////////////////////////////////////////////////////// - /// Database Utilities - ///////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////// + /// Database Utilities + ///////////////////////////////////////////////////////////////////////////// - /** - * @param string $sClass - * @param array $aParams - * @return DBObject - * @throws Exception - */ - protected function createObject($sClass, $aParams) - { - $oMyObj = MetaModel::NewObject($sClass); - foreach($aParams as $sAttCode => $oValue) - { - $oMyObj->Set($sAttCode, $oValue); - } - $oMyObj->DBInsert(); - $iKey = $oMyObj->GetKey(); - $this->debug("Created $sClass::$iKey"); - $this->aCreatedObjects[] = $oMyObj; - return $oMyObj; - } + /** + * @param string $sClass + * @param array $aParams + * + * @return DBObject + * @throws Exception + */ + protected function createObject($sClass, $aParams) + { + $oMyObj = MetaModel::NewObject($sClass); + foreach ($aParams as $sAttCode => $oValue) + { + $oMyObj->Set($sAttCode, $oValue); + } + $oMyObj->DBInsert(); + $iKey = $oMyObj->GetKey(); + $this->debug("Created $sClass::$iKey"); + $this->aCreatedObjects[] = $oMyObj; + + return $oMyObj; + } /** * @param string $sClass @@ -159,11 +164,12 @@ class ItopDataTestCase extends ItopTestCase protected static function updateObject($sClass, $iKey, $aParams) { $oMyObj = MetaModel::GetObject($sClass, $iKey); - foreach($aParams as $sAttCode => $oValue) + foreach ($aParams as $sAttCode => $oValue) { $oMyObj->Set($sAttCode, $oValue); } $oMyObj->DBUpdate(); + return $oMyObj; } @@ -171,6 +177,7 @@ class ItopDataTestCase extends ItopTestCase * Create an Organization in database * * @param string $sName + * * @return \Organization * @throws Exception */ @@ -181,34 +188,37 @@ class ItopDataTestCase extends ItopTestCase 'name' => $sName, )); $this->debug("Created Organization {$oObj->Get('name')}"); + return $oObj; } - /** - * Create a Ticket in database - * - * @param int $iNum - * @return Ticket - * @throws Exception - */ - protected function CreateTicket($iNum) - { - /** @var Ticket $oTicket */ - $oTicket = $this->createObject('UserRequest', array( - 'ref' => 'Ticket_'.$iNum, - 'title' => 'TICKET_'.$iNum, - //'request_type' => 'incident', - 'description' => 'Created for unit tests.', - 'org_id' => $this->getTestOrgId(), - )); - $this->debug("Created {$oTicket->Get('title')} ({$oTicket->Get('ref')})"); - return $oTicket; - } + /** + * Create a Ticket in database + * + * @param int $iNum + * + * @return Ticket + * @throws Exception + */ + protected function CreateTicket($iNum) + { + /** @var Ticket $oTicket */ + $oTicket = $this->createObject('UserRequest', array( + 'ref' => 'Ticket_'.$iNum, + 'title' => 'TICKET_'.$iNum, + //'request_type' => 'incident', + 'description' => 'Created for unit tests.', + 'org_id' => $this->getTestOrgId(), + )); + $this->debug("Created {$oTicket->Get('title')} ({$oTicket->Get('ref')})"); - protected function RemoveTicket($iNum) - { - $this->RemoveObjects('UserRequest', "SELECT UserRequest WHERE ref = 'Ticket_$iNum'"); - } + return $oTicket; + } + + protected function RemoveTicket($iNum) + { + $this->RemoveObjects('UserRequest', "SELECT UserRequest WHERE ref = 'Ticket_$iNum'"); + } /** * Create a Ticket in database @@ -257,7 +267,7 @@ class ItopDataTestCase extends ItopTestCase { $oFilter = \DBSearch::FromOQL($sOQL); $aRes = $oFilter->ToDataArray(array('id')); - foreach($aRes as $aRow) + foreach ($aRes as $aRow) { $this->debug($aRow); $iKey = $aRow['id']; @@ -269,13 +279,14 @@ class ItopDataTestCase extends ItopTestCase } } - /** + /** * Create a UserRequest in database * * @param int $iNum * @param int $iTimeSpent * @param int $iOrgId * @param int $iCallerId + * * @return \UserRequest * @throws Exception */ @@ -292,6 +303,7 @@ class ItopDataTestCase extends ItopTestCase 'org_id' => ($iOrgId == 0 ? $this->getTestOrgId() : $iOrgId), )); $this->debug("Created {$oTicket->Get('title')} ({$oTicket->Get('ref')})"); + return $oTicket; } @@ -313,14 +325,17 @@ class ItopDataTestCase extends ItopTestCase 'nb_u' => $iRackUnit, )); $this->debug("Created {$oServer->GetName()} ({$oServer->GetKey()})"); + return $oServer; } /** * Create a PhysicalInterface in database + * * @param int $iNum * @param int $iSpeed * @param int $iConnectableCiId + * * @return DBObject * @throws Exception */ @@ -332,14 +347,17 @@ class ItopDataTestCase extends ItopTestCase 'connectableci_id' => $iConnectableCiId, )); $this->debug("Created {$oObj->GetName()} ({$oObj->GetKey()})"); + return $oObj; } /** * Create a FiberChannelInterface in database + * * @param int $iNum * @param int $iSpeed * @param int $iConnectableCiId + * * @return DBObject * @throws Exception */ @@ -351,261 +369,300 @@ class ItopDataTestCase extends ItopTestCase 'datacenterdevice_id' => $iConnectableCiId, )); $this->debug("Created {$oObj->GetName()} ({$oObj->GetKey()})"); + return $oObj; } /** * Create a Person in database + * * @param int $iNum * @param int $iOrgId + * * @return Person * @throws Exception */ - protected function CreatePerson($iNum, $iOrgId = 0) - { - /** @var Person $oPerson */ - $oPerson = $this->createObject('Person', array( - 'name' => 'Person_'.$iNum, - 'first_name' => 'Test', - 'org_id' => ($iOrgId == 0 ? $this->getTestOrgId() : $iOrgId), - )); - $this->debug("Created {$oPerson->GetName()} ({$oPerson->GetKey()})"); - return $oPerson; - } + protected function CreatePerson($iNum, $iOrgId = 0) + { + /** @var Person $oPerson */ + $oPerson = $this->createObject('Person', array( + 'name' => 'Person_'.$iNum, + 'first_name' => 'Test', + 'org_id' => ($iOrgId == 0 ? $this->getTestOrgId() : $iOrgId), + )); + $this->debug("Created {$oPerson->GetName()} ({$oPerson->GetKey()})"); + + return $oPerson; + } /** * @param string $sLogin * @param int $iProfileId + * * @return \DBObject * @throws Exception */ protected function CreateUser($sLogin, $iProfileId) - { - $oUserProfile = new URP_UserProfile(); - $oUserProfile->Set('profileid', $iProfileId); - $oUserProfile->Set('reason', 'UNIT Tests'); - $oSet = DBObjectSet::FromObject($oUserProfile); - $oUser = $this->createObject('UserLocal', array( - 'contactid' => 2, - 'login' => $sLogin, - 'password' => $sLogin, - 'language' => 'EN US', - 'profile_list' => $oSet, - )); - $this->debug("Created {$oUser->GetName()} ({$oUser->GetKey()})"); - return $oUser; - } + { + $oUserProfile = new URP_UserProfile(); + $oUserProfile->Set('profileid', $iProfileId); + $oUserProfile->Set('reason', 'UNIT Tests'); + $oSet = DBObjectSet::FromObject($oUserProfile); + $oUser = $this->createObject('UserLocal', array( + 'contactid' => 2, + 'login' => $sLogin, + 'password' => $sLogin, + 'language' => 'EN US', + 'profile_list' => $oSet, + )); + $this->debug("Created {$oUser->GetName()} ({$oUser->GetKey()})"); + + return $oUser; + } - /** - * Create a Hypervisor in database - * @param int $iNum - * @param Server $oServer - * @param Farm $oFarm - * @return Hypervisor - * @throws Exception - */ - protected function CreateHypervisor($iNum, $oServer, $oFarm = null) - { - /** @var Hypervisor $oHypervisor */ - $oHypervisor = $this->createObject('Hypervisor', array( - 'name' => 'Hypervisor_'.$iNum, - 'org_id' => $this->getTestOrgId(), - 'server_id' => $oServer->GetKey(), - 'farm_id' => is_null($oFarm) ? 0 : $oFarm->GetKey(), - )); - if (is_null($oFarm)) - { - $this->debug("Created {$oHypervisor->GetName()} ({$oHypervisor->GetKey()}) on {$oServer->GetName()}"); - } - else - { - $this->debug("Created {$oHypervisor->GetName()} ({$oHypervisor->GetKey()}) on {$oServer->GetName()} part of {$oFarm->GetName()}"); - } - return $oHypervisor; - } + /** + * Create a Hypervisor in database + * + * @param int $iNum + * @param Server $oServer + * @param Farm $oFarm + * + * @return Hypervisor + * @throws Exception + */ + protected function CreateHypervisor($iNum, $oServer, $oFarm = null) + { + /** @var Hypervisor $oHypervisor */ + $oHypervisor = $this->createObject('Hypervisor', array( + 'name' => 'Hypervisor_'.$iNum, + 'org_id' => $this->getTestOrgId(), + 'server_id' => $oServer->GetKey(), + 'farm_id' => is_null($oFarm) ? 0 : $oFarm->GetKey(), + )); + if (is_null($oFarm)) + { + $this->debug("Created {$oHypervisor->GetName()} ({$oHypervisor->GetKey()}) on {$oServer->GetName()}"); + } + else + { + $this->debug("Created {$oHypervisor->GetName()} ({$oHypervisor->GetKey()}) on {$oServer->GetName()} part of {$oFarm->GetName()}"); + } - /** - * Create a Farm in database - * @param int $iNum - * @param string $sRedundancy - * @return Farm - * @throws Exception - */ - protected function CreateFarm($iNum, $sRedundancy = '1') - { - /** @var Farm $oFarm */ - $oFarm = $this->createObject('Farm', array( - 'name' => 'Farm_'.$iNum, - 'org_id' => $this->getTestOrgId(), - 'redundancy' => $sRedundancy, - )); - $this->debug("Created {$oFarm->GetName()} ({$oFarm->GetKey()}) redundancy $sRedundancy"); - return $oFarm; - } + return $oHypervisor; + } - /** - * Create a VM in database - * @param int $iNum - * @param VirtualHost $oVirtualHost - * @return VirtualMachine - * @throws Exception - */ - protected function CreateVirtualMachine($iNum, $oVirtualHost) - { - /** @var VirtualMachine $oVirtualMachine */ - $oVirtualMachine = $this->createObject('VirtualMachine', array( - 'name' => 'VirtualMachine_'.$iNum, - 'org_id' => $this->getTestOrgId(), - 'virtualhost_id' => $oVirtualHost->GetKey(), - )); - $this->debug("Created {$oVirtualMachine->GetName()} ({$oVirtualMachine->GetKey()}) on {$oVirtualHost->GetName()}"); - return $oVirtualMachine; - } + /** + * Create a Farm in database + * + * @param int $iNum + * @param string $sRedundancy + * + * @return Farm + * @throws Exception + */ + protected function CreateFarm($iNum, $sRedundancy = '1') + { + /** @var Farm $oFarm */ + $oFarm = $this->createObject('Farm', array( + 'name' => 'Farm_'.$iNum, + 'org_id' => $this->getTestOrgId(), + 'redundancy' => $sRedundancy, + )); + $this->debug("Created {$oFarm->GetName()} ({$oFarm->GetKey()}) redundancy $sRedundancy"); + + return $oFarm; + } + + /** + * Create a VM in database + * + * @param int $iNum + * @param VirtualHost $oVirtualHost + * + * @return VirtualMachine + * @throws Exception + */ + protected function CreateVirtualMachine($iNum, $oVirtualHost) + { + /** @var VirtualMachine $oVirtualMachine */ + $oVirtualMachine = $this->createObject('VirtualMachine', array( + 'name' => 'VirtualMachine_'.$iNum, + 'org_id' => $this->getTestOrgId(), + 'virtualhost_id' => $oVirtualHost->GetKey(), + )); + $this->debug("Created {$oVirtualMachine->GetName()} ({$oVirtualMachine->GetKey()}) on {$oVirtualHost->GetName()}"); + + return $oVirtualMachine; + } + + protected function CreateObjectWithTagSet() + { + /** @var FAQ $oFaq */ + $oFaq = $this->createObject('FAQ', array( + 'category_id' => 1, + 'title' => 'FAQ_phpunit', + )); + $this->debug("Created {$oFaq->GetName()}"); + + return $oFaq; + } - /** - * Add a link between a contact and a CI. - * The database is not updated. - * - * @param Contact $oContact - * @param FunctionalCI $oCI - * @return lnkContactToFunctionalCI - * @throws Exception - */ - protected function AddContactToCI($oContact, $oCI) - { - $oNewLink = new lnkContactToFunctionalCI(); - $oNewLink->Set('contact_id', $oContact->GetKey()); - $oContacts = $oCI->Get('contacts_list'); - $oContacts->AddItem($oNewLink); - $oCI->Set('contacts_list', $oContacts); + /** + * Add a link between a contact and a CI. + * The database is not updated. + * + * @param Contact $oContact + * @param FunctionalCI $oCI + * + * @return lnkContactToFunctionalCI + * @throws Exception + */ + protected function AddContactToCI($oContact, $oCI) + { + $oNewLink = new lnkContactToFunctionalCI(); + $oNewLink->Set('contact_id', $oContact->GetKey()); + $oContacts = $oCI->Get('contacts_list'); + $oContacts->AddItem($oNewLink); + $oCI->Set('contacts_list', $oContacts); - $this->debug("Added {$oContact->GetName()} to {$oCI->GetName()}"); - return $oNewLink; - } + $this->debug("Added {$oContact->GetName()} to {$oCI->GetName()}"); - /** - * Remove a link between a contact and a CI. - * The database is not updated. - * - * @param Contact $oContact - * @param FunctionalCI $oCI - * @throws Exception - */ - protected function RemoveContactFromCI($oContact, $oCI) - { - $oContacts = $oCI->Get('contacts_list'); - foreach($oContacts as $oLnk) - { - if ($oLnk->Get('contact_id') == $oContact->GetKey()) - { - $oContacts->RemoveItem($oLnk->GetKey()); - $oCI->Set('contacts_list', $oContacts); - $this->debug("Removed {$oContact->GetName()} from {$oCI->Get('name')}"); - return; - } - } - } + return $oNewLink; + } - /** - * Add a link between a CI and a Ticket. - * The database is not updated. - * - * @param FunctionalCI $oCI - * @param Ticket $oTicket - * @param string $sImpactCode - * @throws Exception - */ - protected function AddCIToTicket($oCI, $oTicket, $sImpactCode) - { - $oNewLink = new \lnkFunctionalCIToTicket(); - $oNewLink->Set('functionalci_id', $oCI->GetKey()); - $oNewLink->Set('impact_code', $sImpactCode); - $oCIs = $oTicket->Get('functionalcis_list'); - $oCIs->AddItem($oNewLink); - $oTicket->Set('functionalcis_list', $oCIs); + /** + * Remove a link between a contact and a CI. + * The database is not updated. + * + * @param Contact $oContact + * @param FunctionalCI $oCI + * + * @throws Exception + */ + protected function RemoveContactFromCI($oContact, $oCI) + { + $oContacts = $oCI->Get('contacts_list'); + foreach ($oContacts as $oLnk) + { + if ($oLnk->Get('contact_id') == $oContact->GetKey()) + { + $oContacts->RemoveItem($oLnk->GetKey()); + $oCI->Set('contacts_list', $oContacts); + $this->debug("Removed {$oContact->GetName()} from {$oCI->Get('name')}"); - $this->debug("Added {$oCI->GetName()} to {$oTicket->Get('ref')} with {$sImpactCode}"); - return array($oCI->GetKey() => $sImpactCode); - } + return; + } + } + } - /** - * Remove a link between a CI and a Ticket. - * The database is not updated. - * - * @param FunctionalCI $oCI - * @param Ticket $oTicket - * @throws Exception - */ - protected function RemoveCIFromTicket($oCI, $oTicket) - { - $oCIs = $oTicket->Get('functionalcis_list'); - foreach($oCIs as $oLnk) - { - if ($oLnk->Get('functionalci_id') == $oCI->GetKey()) - { - $sImpactCode = $oLnk->Get('impact_code'); - $oCIs->RemoveItem($oLnk->GetKey()); - $oTicket->Set('functionalcis_list', $oCIs); - $this->debug("Removed {$oCI->GetName()} from {$oTicket->Get('ref')} ({$sImpactCode})"); - return; - } - } - $this->debug("ERROR: {$oCI->GetName()} not attached to {$oTicket->Get('ref')}"); - $this->assertTrue(false); - } + /** + * Add a link between a CI and a Ticket. + * The database is not updated. + * + * @param FunctionalCI $oCI + * @param Ticket $oTicket + * @param string $sImpactCode + * + * @throws Exception + */ + protected function AddCIToTicket($oCI, $oTicket, $sImpactCode) + { + $oNewLink = new \lnkFunctionalCIToTicket(); + $oNewLink->Set('functionalci_id', $oCI->GetKey()); + $oNewLink->Set('impact_code', $sImpactCode); + $oCIs = $oTicket->Get('functionalcis_list'); + $oCIs->AddItem($oNewLink); + $oTicket->Set('functionalcis_list', $oCIs); - /** - * Add a link between a Contact and a Ticket. - * The database is not updated. - * - * @param Contact $oContact - * @param Ticket $oTicket - * @param string $sRoleCode - * @param array $aParams - * @throws Exception - */ - protected function AddContactToTicket($oContact, $oTicket, $sRoleCode, $aParams = array()) - { - $oNewLink = new \lnkContactToTicket(); - $oNewLink->Set('contact_id', $oContact->GetKey()); - $oNewLink->Set('role_code', $sRoleCode); - foreach($aParams as $sAttCode => $oValue) - { - $oNewLink->Set($sAttCode, $oValue); - } - $oCIs = $oTicket->Get('contacts_list'); - $oCIs->AddItem($oNewLink); - $oTicket->Set('contacts_list', $oCIs); + $this->debug("Added {$oCI->GetName()} to {$oTicket->Get('ref')} with {$sImpactCode}"); - $this->debug("Added {$oContact->GetName()} to {$oTicket->Get('ref')} with {$sRoleCode}"); - return array($oContact->GetKey() => $sRoleCode); - } + return array($oCI->GetKey() => $sImpactCode); + } - /** - * Remove a link between a Contact and a Ticket. - * The database is not updated. - * - * @param Contact $oContact - * @param Ticket $oTicket - * @throws Exception - */ - protected function RemoveContactFromTicket($oContact, $oTicket) - { - $oContacts = $oTicket->Get('contacts_list'); - foreach($oContacts as $oLnk) - { - if ($oLnk->Get('contact_id') == $oContact->GetKey()) - { - $sRoleCode = $oLnk->Get('role_code'); - $oContacts->RemoveItem($oLnk->GetKey()); - $oTicket->Set('contacts_list', $oContacts); - $this->debug("Removed {$oContact->GetName()} from {$oTicket->Get('ref')} ({$sRoleCode})"); - return; - } - } - } + /** + * Remove a link between a CI and a Ticket. + * The database is not updated. + * + * @param FunctionalCI $oCI + * @param Ticket $oTicket + * + * @throws Exception + */ + protected function RemoveCIFromTicket($oCI, $oTicket) + { + $oCIs = $oTicket->Get('functionalcis_list'); + foreach ($oCIs as $oLnk) + { + if ($oLnk->Get('functionalci_id') == $oCI->GetKey()) + { + $sImpactCode = $oLnk->Get('impact_code'); + $oCIs->RemoveItem($oLnk->GetKey()); + $oTicket->Set('functionalcis_list', $oCIs); + $this->debug("Removed {$oCI->GetName()} from {$oTicket->Get('ref')} ({$sImpactCode})"); + + return; + } + } + $this->debug("ERROR: {$oCI->GetName()} not attached to {$oTicket->Get('ref')}"); + $this->assertTrue(false); + } + + /** + * Add a link between a Contact and a Ticket. + * The database is not updated. + * + * @param Contact $oContact + * @param Ticket $oTicket + * @param string $sRoleCode + * @param array $aParams + * + * @throws Exception + */ + protected function AddContactToTicket($oContact, $oTicket, $sRoleCode, $aParams = array()) + { + $oNewLink = new \lnkContactToTicket(); + $oNewLink->Set('contact_id', $oContact->GetKey()); + $oNewLink->Set('role_code', $sRoleCode); + foreach ($aParams as $sAttCode => $oValue) + { + $oNewLink->Set($sAttCode, $oValue); + } + $oCIs = $oTicket->Get('contacts_list'); + $oCIs->AddItem($oNewLink); + $oTicket->Set('contacts_list', $oCIs); + + $this->debug("Added {$oContact->GetName()} to {$oTicket->Get('ref')} with {$sRoleCode}"); + + return array($oContact->GetKey() => $sRoleCode); + } + + /** + * Remove a link between a Contact and a Ticket. + * The database is not updated. + * + * @param Contact $oContact + * @param Ticket $oTicket + * + * @throws Exception + */ + protected function RemoveContactFromTicket($oContact, $oTicket) + { + $oContacts = $oTicket->Get('contacts_list'); + foreach ($oContacts as $oLnk) + { + if ($oLnk->Get('contact_id') == $oContact->GetKey()) + { + $sRoleCode = $oLnk->Get('role_code'); + $oContacts->RemoveItem($oLnk->GetKey()); + $oTicket->Set('contacts_list', $oContacts); + $this->debug("Removed {$oContact->GetName()} from {$oTicket->Get('ref')} ({$sRoleCode})"); + + return; + } + } + } /** * Reload a Ticket from the database. @@ -616,62 +673,65 @@ class ItopDataTestCase extends ItopTestCase * @throws ArchivedObjectException * @throws Exception */ - protected function ReloadObject(&$oObject) - { - $oObject = MetaModel::GetObject(get_class($oObject), $oObject->GetKey()); - return $oObject; - } + protected function ReloadObject(&$oObject) + { + $oObject = MetaModel::GetObject(get_class($oObject), $oObject->GetKey()); - /** - * Check or Display the CI list of a Ticket. - * - * @param Ticket $oTicket - * @param array $aWaitedCIList { iCIId => sImpactCode } - * @throws Exception - */ - protected function CheckFunctionalCIList($oTicket, $aWaitedCIList = array()) - { - $this->debug("\nResulting functionalcis_list {$oTicket->Get('ref')} ({$oTicket->Get('functionalcis_list')->Count()}):"); - foreach($oTicket->Get('functionalcis_list') as $oLnk) - { - $this->debug($oLnk->Get('functionalci_name')." => ".$oLnk->Get('impact_code').""); - $iId = $oLnk->Get('functionalci_id'); - if (!empty($aWaitedCIList)) - { - $this->assertTrue(array_key_exists($iId, $aWaitedCIList)); - $this->assertEquals($aWaitedCIList[$iId], $oLnk->Get('impact_code')); - } - } - } + return $oObject; + } - /** - * Check or Display the Contact list of a DBObject (having a contacts_list). - * Can also control other attributes of the link. - * - * @param Ticket $oTicket - * @param array $aWaitedContactList { iContactId => array(attcode => value) } - * @throws Exception - */ - protected function CheckContactList($oTicket, $aWaitedContactList = array()) - { - $this->debug("\nResulting contacts_list {$oTicket->Get('ref')} ({$oTicket->Get('contacts_list')->Count()}):"); - foreach($oTicket->Get('contacts_list') as $oLnk) - { - $this->debug($oLnk->Get('contact_id_friendlyname')." => ".$oLnk->Get('role_code')); - $iId = $oLnk->Get('contact_id'); - if (!empty($aWaitedContactList)) - { - $this->assertTrue(array_key_exists($iId, $aWaitedContactList)); - foreach($aWaitedContactList[$iId] as $sAttCode => $oValue) - { - if (MetaModel::IsValidAttCode(get_class($oTicket), $sAttCode)) - { - $this->assertEquals($oValue, $oLnk->Get($sAttCode)); - } - } - } - } - } + /** + * Check or Display the CI list of a Ticket. + * + * @param Ticket $oTicket + * @param array $aWaitedCIList { iCIId => sImpactCode } + * + * @throws Exception + */ + protected function CheckFunctionalCIList($oTicket, $aWaitedCIList = array()) + { + $this->debug("\nResulting functionalcis_list {$oTicket->Get('ref')} ({$oTicket->Get('functionalcis_list')->Count()}):"); + foreach ($oTicket->Get('functionalcis_list') as $oLnk) + { + $this->debug($oLnk->Get('functionalci_name')." => ".$oLnk->Get('impact_code').""); + $iId = $oLnk->Get('functionalci_id'); + if (!empty($aWaitedCIList)) + { + $this->assertTrue(array_key_exists($iId, $aWaitedCIList)); + $this->assertEquals($aWaitedCIList[$iId], $oLnk->Get('impact_code')); + } + } + } + + /** + * Check or Display the Contact list of a DBObject (having a contacts_list). + * Can also control other attributes of the link. + * + * @param Ticket $oTicket + * @param array $aWaitedContactList { iContactId => array(attcode => value) } + * + * @throws Exception + */ + protected function CheckContactList($oTicket, $aWaitedContactList = array()) + { + $this->debug("\nResulting contacts_list {$oTicket->Get('ref')} ({$oTicket->Get('contacts_list')->Count()}):"); + foreach ($oTicket->Get('contacts_list') as $oLnk) + { + $this->debug($oLnk->Get('contact_id_friendlyname')." => ".$oLnk->Get('role_code')); + $iId = $oLnk->Get('contact_id'); + if (!empty($aWaitedContactList)) + { + $this->assertTrue(array_key_exists($iId, $aWaitedContactList)); + foreach ($aWaitedContactList[$iId] as $sAttCode => $oValue) + { + if (MetaModel::IsValidAttCode(get_class($oTicket), $sAttCode)) + { + $this->assertEquals($oValue, $oLnk->Get($sAttCode)); + } + } + } + } + } protected function CreateTestOrganization() { diff --git a/test/application/search/CriterionConversionTest.php b/test/application/search/CriterionConversionTest.php index 8c9eab48a..4a1df6bd5 100644 --- a/test/application/search/CriterionConversionTest.php +++ b/test/application/search/CriterionConversionTest.php @@ -459,28 +459,28 @@ class CriterionConversionTest extends ItopDataTestCase 'ExpectedCriterion' => array(array('widget' => 'raw')), ), 'TagSet Matches' => array( - 'OQL' => "SELECT UserRequest WHERE tagfield MATCHES 'tag1'", - 'ExpectedOQL' => "SELECT `UserRequest` FROM UserRequest AS `UserRequest` WHERE `UserRequest`.`tagfield` MATCHES 'tag1'", + 'OQL' => "SELECT ".TAG_CLASS." WHERE ".TAG_ATTCODE." MATCHES 'tag1'", + 'ExpectedOQL' => "SELECT `".TAG_CLASS."` FROM ".TAG_CLASS." AS `".TAG_CLASS."` WHERE `".TAG_CLASS."`.`".TAG_ATTCODE."` MATCHES 'tag1'", 'ExpectedCriterion' => array(array('widget' => 'tag_set')), ), 'TagSet Matches2' => array( - 'OQL' => "SELECT UserRequest WHERE tagfield MATCHES 'tag1 tag2'", - 'ExpectedOQL' => "SELECT `UserRequest` FROM UserRequest AS `UserRequest` WHERE `UserRequest`.`tagfield` MATCHES 'tag1 tag2'", + 'OQL' => "SELECT ".TAG_CLASS." WHERE ".TAG_ATTCODE." MATCHES 'tag1 tag2'", + 'ExpectedOQL' => "SELECT `".TAG_CLASS."` FROM ".TAG_CLASS." AS `".TAG_CLASS."` WHERE `".TAG_CLASS."`.`".TAG_ATTCODE."` MATCHES 'tag1 tag2'", 'ExpectedCriterion' => array(array('widget' => 'tag_set')), ), 'TagSet Undefined' => array( - 'OQL' => "SELECT UserRequest WHERE tagfield = ''", - 'ExpectedOQL' => "SELECT `UserRequest` FROM UserRequest AS `UserRequest` WHERE (`UserRequest`.`tagfield` = '')", + 'OQL' => "SELECT ".TAG_CLASS." WHERE ".TAG_ATTCODE." = ''", + 'ExpectedOQL' => "SELECT `".TAG_CLASS."` FROM ".TAG_CLASS." AS `".TAG_CLASS."` WHERE (`".TAG_CLASS."`.`".TAG_ATTCODE."` = '')", 'ExpectedCriterion' => array(array('widget' => 'tag_set')), ), 'TagSet Undefined and tag' => array( - 'OQL' => "SELECT UserRequest WHERE (((tagfield MATCHES 'tag1 tag2') OR (tagfield = '')) AND 1)", - 'ExpectedOQL' => "SELECT `UserRequest` FROM UserRequest AS `UserRequest` WHERE ((`UserRequest`.`tagfield` MATCHES 'tag1 tag2' OR (`UserRequest`.`tagfield` = '')) AND 1)", + 'OQL' => "SELECT ".TAG_CLASS." WHERE (((".TAG_ATTCODE." MATCHES 'tag1 tag2') OR (".TAG_ATTCODE." = '')) AND 1)", + 'ExpectedOQL' => "SELECT `".TAG_CLASS."` FROM ".TAG_CLASS." AS `".TAG_CLASS."` WHERE ((`".TAG_CLASS."`.`".TAG_ATTCODE."` MATCHES 'tag1 tag2' OR (`".TAG_CLASS."`.`".TAG_ATTCODE."` = '')) AND 1)", 'ExpectedCriterion' => array(array('widget' => 'tag_set')), ), 'TagSet equals' => array( - 'OQL' => "SELECT UserRequest WHERE tagfield = 'tag1 tag2'", - 'ExpectedOQL' => "SELECT `UserRequest` FROM UserRequest AS `UserRequest` WHERE (`UserRequest`.`tagfield` MATCHES 'tag1' AND `UserRequest`.`tagfield` MATCHES 'tag2')", + 'OQL' => "SELECT ".TAG_CLASS." WHERE ".TAG_ATTCODE." = 'tag1 tag2'", + 'ExpectedOQL' => "SELECT `".TAG_CLASS."` FROM ".TAG_CLASS." AS `".TAG_CLASS."` WHERE (`".TAG_CLASS."`.`".TAG_ATTCODE."` MATCHES 'tag1' AND `".TAG_CLASS."`.`".TAG_ATTCODE."` MATCHES 'tag2')", 'ExpectedCriterion' => array(array('widget' => 'tag_set')), ), diff --git a/test/core/DBSearchCommitTest.php b/test/core/DBSearchCommitTest.php index 267b723a6..658910a97 100644 --- a/test/core/DBSearchCommitTest.php +++ b/test/core/DBSearchCommitTest.php @@ -41,18 +41,18 @@ class DBSearchCommitTest extends ItopDataTestCase $this->CreateTagData(TAG_CLASS, TAG_ATTCODE, 'tag1', 'UNIT First'); $this->CreateTagData(TAG_CLASS, TAG_ATTCODE, 'tag2', 'UNIT Second'); //Use it - $oTicket = $this->CreateTicket(1); - $oTicket->Set(TAG_ATTCODE, 'tag1'); - $oTicket->DBWrite(); + $oObjWithTagSet = $this->CreateObjectWithTagSet(); + $oObjWithTagSet->Set(TAG_ATTCODE, 'tag1'); + $oObjWithTagSet->DBWrite(); - $oSearch = DBSearch::FromOQL("SELECT UserRequest"); + $oSearch = DBSearch::FromOQL("SELECT ".TAG_CLASS); $oSearch->AddCondition(TAG_ATTCODE, 'tag1', 'MATCHES'); $oSet = new \DBObjectSet($oSearch); static::assertEquals(1, $oSet->Count()); - $oTicket->Set(TAG_ATTCODE, 'tag1 tag2'); - $oTicket->DBWrite(); + $oObjWithTagSet->Set(TAG_ATTCODE, 'tag1 tag2'); + $oObjWithTagSet->DBWrite(); $oSet = new \DBObjectSet($oSearch); static::assertEquals(1, $oSet->Count()); @@ -73,18 +73,18 @@ class DBSearchCommitTest extends ItopDataTestCase $this->CreateTagData(TAG_CLASS, TAG_ATTCODE, 'tag1', 'UNIT First'); $this->CreateTagData(TAG_CLASS, TAG_ATTCODE, 'tag2', 'UNIT Second'); //Use it - $oTicket = $this->CreateTicket(1); - $oTicket->Set(TAG_ATTCODE, 'tag1'); - $oTicket->DBWrite(); + $oObjWithTagSet = $this->CreateObjectWithTagSet(); + $oObjWithTagSet->Set(TAG_ATTCODE, 'tag1'); + $oObjWithTagSet->DBWrite(); - $oSearch = DBSearch::FromOQL("SELECT UserRequest"); + $oSearch = DBSearch::FromOQL("SELECT ".TAG_CLASS); $oSearch->AddCondition(TAG_ATTCODE, 'tag1'); $oSet = new \DBObjectSet($oSearch); static::assertEquals(1, $oSet->Count()); - $oTicket->Set(TAG_ATTCODE, 'tag1 tag2'); - $oTicket->DBWrite(); + $oObjWithTagSet->Set(TAG_ATTCODE, 'tag1 tag2'); + $oObjWithTagSet->DBWrite(); $oSet = new \DBObjectSet($oSearch); static::assertEquals(0, $oSet->Count()); diff --git a/test/core/TagSetFieldDataTest.php b/test/core/TagSetFieldDataTest.php index 66c5c6ace..3f86d62d1 100644 --- a/test/core/TagSetFieldDataTest.php +++ b/test/core/TagSetFieldDataTest.php @@ -105,9 +105,9 @@ class TagSetFieldDataTest extends ItopDataTestCase // Create a tag $oTagData = $this->CreateTagData(TAG_CLASS, TAG_ATTCODE, 'tag1', 'First'); //Use it - $oTicket = $this->CreateTicket(1); - $oTicket->Set(TAG_ATTCODE, 'tag1'); - $oTicket->DBWrite(); + $oObjWithTagSet = $this->CreateObjectWithTagSet(); + $oObjWithTagSet->Set(TAG_ATTCODE, 'tag1'); + $oObjWithTagSet->DBWrite(); // Try to delete the tag, must complain ! try @@ -203,9 +203,9 @@ class TagSetFieldDataTest extends ItopDataTestCase $oTagData->DBWrite(); //Use it - $oTicket = $this->CreateTicket(1); - $oTicket->Set(TAG_ATTCODE, 'tag2'); - $oTicket->DBWrite(); + $oObjWithTagSet = $this->CreateObjectWithTagSet(); + $oObjWithTagSet->Set(TAG_ATTCODE, 'tag2'); + $oObjWithTagSet->DBWrite(); // Try to change the code of the tag, must complain ! try @@ -264,7 +264,7 @@ class TagSetFieldDataTest extends ItopDataTestCase $sTagCode = 'MaxTag'.$i; $this->CreateTagData(TAG_CLASS, TAG_ATTCODE, $sTagCode, $sTagCode); } - $oTicket = $this->CreateTicket(1); + $oObjWithTagSet = $this->CreateObjectWithTagSet(); $this->debug("Max number of tags is $iMaxTags"); $sValue = ''; for ($i = 0; $i < ($iMaxTags + 1); $i++) @@ -273,8 +273,8 @@ class TagSetFieldDataTest extends ItopDataTestCase { $sTagCode = 'MaxTag'.$i; $sValue .= "$sTagCode "; - $oTicket->Set(TAG_ATTCODE, $sValue); - $oTicket->DBWrite(); + $oObjWithTagSet->Set(TAG_ATTCODE, $sValue); + $oObjWithTagSet->DBWrite(); } catch (\Exception $e) { // Should fail on the last iteration diff --git a/test/core/ormTagSetTest.php b/test/core/ormTagSetTest.php index 1b8f54a89..87beb6c29 100644 --- a/test/core/ormTagSetTest.php +++ b/test/core/ormTagSetTest.php @@ -60,7 +60,7 @@ class ormTagSetTest extends ItopDataTestCase public function testGetTagDataClass() { $oTagSet = new ormTagSet(TAG_CLASS, TAG_ATTCODE, MAX_TAGS); - static::assertEquals($oTagSet->GetTagDataClass(), 'TagSetFieldDataFor_Ticket__tagfield'); + static::assertEquals($oTagSet->GetTagDataClass(), 'TagSetFieldDataFor_'.TAG_CLASS.'__'.TAG_ATTCODE); } public function testGetValue()