diff --git a/tests/php-unit-tests/unitary-tests/core/TriggerTest.php b/tests/php-unit-tests/unitary-tests/core/TriggerTest.php index 333a6082cc..b69194f459 100644 --- a/tests/php-unit-tests/unitary-tests/core/TriggerTest.php +++ b/tests/php-unit-tests/unitary-tests/core/TriggerTest.php @@ -4,7 +4,10 @@ namespace Combodo\iTop\Test\UnitTest\Core; use Combodo\iTop\Test\UnitTest\ItopDataTestCase; use ContextTag; +use Exception; +use IssueLog; use MetaModel; +use Person; use TriggerOnObjectCreate; /** @@ -16,7 +19,6 @@ use TriggerOnObjectCreate; * @preserveGlobalState disabled * @backupGlobals disabled */ - class TriggerTest extends ItopDataTestCase { const USE_TRANSACTION = false; @@ -42,20 +44,16 @@ class TriggerTest extends ItopDataTestCase public function testEnrichRaisedException_Trigger() { $oTrigger = MetaModel::NewObject('TriggerOnObjectCreate'); - try - { - try - { + try { + try { MetaModel::NewObject('Toto'); } - catch (\Exception $e) - { + catch (\Exception $e) { \utils::EnrichRaisedException($oTrigger, $e); } $this->assertTrue(false, "An exception should have been thrown"); } - catch(\CoreException $e1) - { + catch (\CoreException $e1) { $this->assertEquals('CoreException', get_class($e1)); $this->assertEquals('Unknown class \'Toto\' (TriggerOnObjectCreate::-1 ()
)', $e1->getMessage()); @@ -67,8 +65,8 @@ class TriggerTest extends ItopDataTestCase public function NoEnrichmentProvider() { return [ - [ null ], - [ new NonCmdbAbstractObject() ], + [null], + [new NonCmdbAbstractObject()], ] ; } @@ -78,23 +76,52 @@ class TriggerTest extends ItopDataTestCase */ public function testEnrichRaisedException_NoEnrichment($oCmdbAbstract) { - try - { - try - { + try { + try { MetaModel::NewObject('CoreException'); } - catch (\Exception $e) - { + catch (\Exception $e) { \utils::EnrichRaisedException($oCmdbAbstract, $e); } $this->assertTrue(false, "An exception should have been thrown"); } - catch(\Exception $e1) - { + catch (\Exception $e1) { $this->assertEquals($e, $e1); } } + + public function testLogException() + { + $sTestLogPath = APPROOT.'log/TriggerTest__testLogException.log'; + IssueLog::Enable($sTestLogPath); + + try { + $oPerson1 = MetaModel::GetObject(Person::class, 1, true); + $sExceptionMessage = 'My test exception message'; + $oException = new Exception($sExceptionMessage); + + /** @var TriggerOnObjectCreate $oTrigger */ + $oTrigger = MetaModel::NewObject(TriggerOnObjectCreate::class, [ + 'description' => 'my trigger description', + ]); + $oTrigger->DBWrite(); + $oTrigger->LogException($oException, $oPerson1); + + $sTestLogFileContent = file_get_contents($sTestLogPath); + + $this->assertContains('A trigger did throw an exception', $sTestLogFileContent); + + $this->assertContains($oPerson1->GetKey(), $sTestLogFileContent); + /** @noinspection GetClassUsageInspection */ + $this->assertContains(get_class($oPerson1), $sTestLogFileContent); + $this->assertContains($oPerson1->GetRawName(), $sTestLogFileContent); + + $this->assertContains($sExceptionMessage, $sTestLogFileContent); + } + finally { + IssueLog::Enable(APPROOT.'log/error.log'); + } + } } class NonCmdbAbstractObject{