1
1
package org .code .javabuilder ;
2
2
3
- import static org .code .protocol .LoggerNames .MAIN_LOGGER ;
4
3
import static org .junit .jupiter .api .Assertions .assertEquals ;
5
4
import static org .mockito .ArgumentMatchers .any ;
6
5
import static org .mockito .Mockito .*;
7
6
8
7
import java .io .IOException ;
9
- import java .util .logging .Handler ;
10
- import java .util .logging .LogRecord ;
11
- import java .util .logging .Logger ;
12
8
import org .code .protocol .*;
13
9
import org .junit .jupiter .api .AfterEach ;
14
10
import org .junit .jupiter .api .BeforeEach ;
15
11
import org .junit .jupiter .api .Test ;
16
12
import org .mockito .ArgumentCaptor ;
13
+ import org .mockito .MockedStatic ;
14
+ import org .mockito .Mockito ;
17
15
18
16
class ExceptionHandlerTest {
19
17
20
18
private OutputAdapter outputAdapter ;
21
19
private SystemExitHelper systemExitHelper ;
22
- private Handler testHandler ;
23
20
private ArgumentCaptor <ClientMessage > messageCaptor ;
24
21
private ExceptionHandler unitUnderTest ;
22
+ private MockedStatic <LoggerUtils > loggerUtilsMockedStatic ;
25
23
26
24
@ BeforeEach
27
25
public void setUp () {
28
26
outputAdapter = mock (OutputAdapter .class );
29
27
systemExitHelper = mock (SystemExitHelper .class );
30
- testHandler = mock (Handler .class );
31
28
messageCaptor = ArgumentCaptor .forClass (ClientMessage .class );
32
29
unitUnderTest = new ExceptionHandler (outputAdapter , systemExitHelper );
33
30
AWSMetricClient metricClient = mock (AWSMetricClient .class );
34
31
JavabuilderContext .getInstance ().register (MetricClient .class , metricClient );
35
-
36
- Logger .getLogger (MAIN_LOGGER ).addHandler (testHandler );
37
- Logger .getLogger (MAIN_LOGGER ).setUseParentHandlers (false );
32
+ loggerUtilsMockedStatic = Mockito .mockStatic (LoggerUtils .class );
38
33
}
39
34
40
35
@ AfterEach
41
36
public void tearDown () {
42
- Logger .getLogger (MAIN_LOGGER ).removeHandler (testHandler );
43
- Logger .getLogger (MAIN_LOGGER ).setUseParentHandlers (true );
37
+ loggerUtilsMockedStatic .close ();
44
38
}
45
39
46
40
@ Test
@@ -49,7 +43,7 @@ public void testFatalError() {
49
43
unitUnderTest .handle (error );
50
44
51
45
// Should log, notify user, and exit
52
- verify (testHandler ). publish (any (LogRecord . class ));
46
+ loggerUtilsMockedStatic . verify (() -> LoggerUtils . logSevereError (any (), any (), any () ));
53
47
verify (outputAdapter ).sendMessage (any (ClientMessage .class ));
54
48
verify (systemExitHelper ).exit (error .getErrorCode ());
55
49
}
@@ -61,7 +55,7 @@ public void testInternalServerException() {
61
55
unitUnderTest .handle (internal );
62
56
63
57
// Should log and notify user
64
- verify (testHandler ). publish (any (LogRecord . class ));
58
+ loggerUtilsMockedStatic . verify (() -> LoggerUtils . logSevereError (any (), any (), any () ));
65
59
verify (outputAdapter ).sendMessage (any (ClientMessage .class ));
66
60
}
67
61
@@ -72,7 +66,7 @@ public void testInternalFacingException() {
72
66
unitUnderTest .handle (internal );
73
67
74
68
// Should log only
75
- verify (testHandler ). publish (any (LogRecord . class ));
69
+ loggerUtilsMockedStatic . verify (() -> LoggerUtils . logTrackingExceptionAsWarning (any () ));
76
70
verify (outputAdapter , never ()).sendMessage (any (ClientMessage .class ));
77
71
}
78
72
@@ -83,7 +77,7 @@ public void testUserInitiatedException() {
83
77
unitUnderTest .handle (userInitiated );
84
78
85
79
// Should notify user only
86
- verify (testHandler , never ()). publish (any (LogRecord . class ));
80
+ loggerUtilsMockedStatic . verify (() -> LoggerUtils . logSevereError (any (), any (), any ()), never ( ));
87
81
verify (outputAdapter ).sendMessage (any (ClientMessage .class ));
88
82
}
89
83
@@ -94,7 +88,7 @@ public void testUnknownException() {
94
88
unitUnderTest .handle (unknown );
95
89
96
90
// Should log and notify user
97
- verify (testHandler ). publish (any (LogRecord . class ));
91
+ loggerUtilsMockedStatic . verify (() -> LoggerUtils . logSevereError (any () ));
98
92
verify (outputAdapter ).sendMessage (any (ClientMessage .class ));
99
93
100
94
final ClientMessage message = messageCaptor .getValue ();
0 commit comments