Refactor unit test for Notification Error Handler 12/129912/2
authoremaclee <lee.anjella.macabuhay@est.tech>
Wed, 13 Jul 2022 16:11:51 +0000 (17:11 +0100)
committeremaclee <lee.anjella.macabuhay@est.tech>
Wed, 13 Jul 2022 16:51:47 +0000 (17:51 +0100)
Issue-ID: CPS-1146
Signed-off-by: emaclee <lee.anjella.macabuhay@est.tech>
Change-Id: Idd1c1236b9574c1d070c3dc4111ebcce8d800b23

cps-service/src/test/groovy/org/onap/cps/notification/NotificationErrorHandlerSpec.groovy

index 4cacc43..d0cd473 100644 (file)
 
 package org.onap.cps.notification
 
+import ch.qos.logback.classic.Logger
+import ch.qos.logback.classic.spi.ILoggingEvent
+import ch.qos.logback.core.read.ListAppender
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.BeforeEach
+import org.slf4j.LoggerFactory
+
 import spock.lang.Specification
 
 class NotificationErrorHandlerSpec extends Specification{
 
     NotificationErrorHandler objectUnderTest = new NotificationErrorHandler()
+    def logWatcher = Spy(ListAppender<ILoggingEvent>)
+
+    @BeforeEach
+    void setup() {
+        ((Logger) LoggerFactory.getLogger(NotificationErrorHandler.class)).addAppender(logWatcher);
+        logWatcher.start();
+    }
+
+    @AfterEach
+    void teardown() {
+        ((Logger) LoggerFactory.getLogger(NotificationErrorHandler.class)).detachAndStopAllAppenders();
+    }
 
     def 'Logging exception via notification error handler'() {
-        given: 'redirect system.out to a readable stream'
-            def systemOutAsStream = new ByteArrayOutputStream()
-            System.out = new PrintStream(systemOutAsStream)
         when: 'some exception occurs'
             objectUnderTest.onException(new Exception('sample exception'), 'some context')
         then: 'log output results contains the correct error details'
-            def systemOutAsString = systemOutAsStream.toString()
-            systemOutAsString.contains('Failed to process')
-            systemOutAsString.contains('Error cause: sample exception')
-            systemOutAsString.contains('Error context: [some context]')
+            def logMessage = logWatcher.list.get(0).getFormattedMessage()
+            logMessage.contains(
+                    "Failed to process \n" +
+                    " Error cause: sample exception \n" +
+                    " Error context: [some context]")
     }
 }