1
+ package de .cotto .bitbook .cli ;
2
+
3
+ import org .jline .reader .LineReader ;
4
+ import org .jline .terminal .Terminal ;
5
+ import org .junit .jupiter .api .BeforeEach ;
6
+ import org .junit .jupiter .api .Test ;
7
+ import org .junit .jupiter .api .extension .ExtendWith ;
8
+ import org .mockito .InOrder ;
9
+ import org .mockito .Mock ;
10
+ import org .mockito .Mockito ;
11
+ import org .mockito .junit .jupiter .MockitoExtension ;
12
+
13
+ import java .io .PrintWriter ;
14
+
15
+ import static org .assertj .core .api .Assertions .assertThat ;
16
+ import static org .mockito .ArgumentMatchers .anyString ;
17
+ import static org .mockito .Mockito .verify ;
18
+ import static org .mockito .Mockito .when ;
19
+
20
+ @ ExtendWith (MockitoExtension .class )
21
+ class TerminalSupportTest {
22
+ private TerminalSupport terminalSupport ;
23
+
24
+ @ Mock
25
+ private Terminal terminal ;
26
+
27
+ @ Mock
28
+ private LineReader lineReader ;
29
+
30
+ @ Mock
31
+ private PromptChangeListener promptChangeListener ;
32
+
33
+ @ Mock
34
+ private PrintWriter writer ;
35
+
36
+ @ BeforeEach
37
+ void setUp () {
38
+ when (terminal .writer ()).thenReturn (writer );
39
+ terminalSupport = new TerminalSupport (terminal , lineReader , promptChangeListener );
40
+ }
41
+
42
+ @ Test
43
+ void write () {
44
+ terminalSupport .write ("x" );
45
+ InOrder inOrder = Mockito .inOrder (writer );
46
+ inOrder .verify (writer ).println ("x" );
47
+ inOrder .verify (writer ).flush ();
48
+ }
49
+
50
+ @ Test
51
+ void request_prompt () {
52
+ terminalSupport .request ("?" );
53
+ verify (lineReader ).readLine ("? " );
54
+ }
55
+
56
+ @ Test
57
+ void request_empty () {
58
+ when (lineReader .readLine (anyString ())).thenReturn ("" );
59
+ assertThat (terminalSupport .request ("?" )).isEmpty ();
60
+ }
61
+
62
+ @ Test
63
+ void request_blank () {
64
+ when (lineReader .readLine (anyString ())).thenReturn ("\t \r \n " );
65
+ assertThat (terminalSupport .request ("?" )).isEmpty ();
66
+ }
67
+
68
+ @ Test
69
+ void request () {
70
+ when (lineReader .readLine (anyString ())).thenReturn ("hello" );
71
+ assertThat (terminalSupport .request ("?" )).contains ("hello" );
72
+ }
73
+
74
+ @ Test
75
+ void changePrompt () {
76
+ terminalSupport .changePrompt ("x" );
77
+ verify (promptChangeListener ).changePrompt ("x" );
78
+ }
79
+
80
+ @ Test
81
+ void changePromptToDefault () {
82
+ terminalSupport .changePromptToDefault ();
83
+ verify (promptChangeListener ).changePromptToDefault ();
84
+ }
85
+ }
0 commit comments