diff --git a/tests/php-unit-tests/unitary-tests/core/TriggerTest.php b/tests/php-unit-tests/unitary-tests/core/TriggerTest.php index 87b41001e..bf91d28b9 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; /** @@ -14,7 +17,6 @@ use TriggerOnObjectCreate; * * @runTestsInSeparateProcesses */ - class TriggerTest extends ItopDataTestCase { const USE_TRANSACTION = false; @@ -40,33 +42,29 @@ 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()); $fullStackTraceAsString = $e1->getFullStackTraceAsString(); - $this->assertContains("MetaModel::NewObject", $fullStackTraceAsString,"new enriched exception should contain root cause method: " . $fullStackTraceAsString); + $this->assertContains("MetaModel::NewObject", $fullStackTraceAsString, "new enriched exception should contain root cause method: ".$fullStackTraceAsString); } } public function NoEnrichmentProvider() { return [ - [ null ], - [ new NonCmdbAbstractObject() ], + [null], + [new NonCmdbAbstractObject()], ] ; } @@ -76,23 +74,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{