1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.hbtop.screen.mode;
19
20 import static org.hamcrest.CoreMatchers.is;
21 import static org.junit.Assert.assertThat;
22 import static org.mockito.Mockito.any;
23 import static org.mockito.Mockito.eq;
24 import static org.mockito.Mockito.never;
25 import static org.mockito.Mockito.verify;
26
27 import java.util.Arrays;
28 import org.apache.hadoop.hbase.hbtop.mode.Mode;
29 import org.apache.hadoop.hbase.hbtop.screen.ScreenView;
30 import org.apache.hadoop.hbase.hbtop.screen.top.TopScreenView;
31 import org.apache.hadoop.hbase.testclassification.SmallTests;
32 import org.junit.Test;
33 import org.junit.experimental.categories.Category;
34 import org.junit.runner.RunWith;
35 import org.mockito.Mock;
36 import org.mockito.runners.MockitoJUnitRunner;
37
38 @Category(SmallTests.class)
39 @RunWith(MockitoJUnitRunner.class)
40 public class TestModeScreenPresenter {
41
42 @Mock
43 private ModeScreenView modeScreenView;
44
45 @Mock
46 private TopScreenView topScreenView;
47
48 @Mock
49 private ModeScreenPresenter.ResultListener resultListener;
50
51 private ModeScreenPresenter createModeScreenPresenter(Mode currentMode) {
52 return new ModeScreenPresenter(modeScreenView, currentMode, resultListener, topScreenView);
53 }
54
55 @Test
56 public void testInit() {
57 ModeScreenPresenter modeScreenPresenter = createModeScreenPresenter(Mode.REGION);
58
59 modeScreenPresenter.init();
60
61 int modeHeaderMaxLength = Mode.REGION_SERVER.getHeader().length();
62 int modeDescriptionMaxLength = Mode.REGION_SERVER.getDescription().length();
63
64 verify(modeScreenView).showModeScreen(eq(Mode.REGION), eq(Arrays.asList(Mode.values())),
65 eq(Mode.REGION.ordinal()) , eq(modeHeaderMaxLength), eq(modeDescriptionMaxLength));
66 }
67
68 @Test
69 public void testSelectNamespaceMode() {
70 ModeScreenPresenter modeScreenPresenter = createModeScreenPresenter(Mode.REGION);
71
72 modeScreenPresenter.arrowUp();
73 modeScreenPresenter.arrowUp();
74
75 assertThat(modeScreenPresenter.transitionToNextScreen(true), is((ScreenView) topScreenView));
76 verify(resultListener).accept(eq(Mode.NAMESPACE));
77 }
78
79 @Test
80 public void testSelectTableMode() {
81 ModeScreenPresenter modeScreenPresenter = createModeScreenPresenter(Mode.REGION);
82
83 modeScreenPresenter.arrowUp();
84 assertThat(modeScreenPresenter.transitionToNextScreen(true), is((ScreenView) topScreenView));
85 verify(resultListener).accept(eq(Mode.TABLE));
86 }
87
88 @Test
89 public void testSelectRegionMode() {
90 ModeScreenPresenter modeScreenPresenter = createModeScreenPresenter(Mode.NAMESPACE);
91
92 modeScreenPresenter.arrowDown();
93 modeScreenPresenter.arrowDown();
94
95 assertThat(modeScreenPresenter.transitionToNextScreen(true), is((ScreenView) topScreenView));
96 verify(resultListener).accept(eq(Mode.REGION));
97 }
98
99 @Test
100 public void testSelectRegionServerMode() {
101 ModeScreenPresenter modeScreenPresenter = createModeScreenPresenter(Mode.REGION);
102
103 modeScreenPresenter.arrowDown();
104
105 assertThat(modeScreenPresenter.transitionToNextScreen(true), is((ScreenView) topScreenView));
106 verify(resultListener).accept(eq(Mode.REGION_SERVER));
107 }
108
109 @Test
110 public void testCancelSelectingMode() {
111 ModeScreenPresenter modeScreenPresenter = createModeScreenPresenter(Mode.REGION);
112
113 modeScreenPresenter.arrowDown();
114 modeScreenPresenter.arrowDown();
115
116 assertThat(modeScreenPresenter.transitionToNextScreen(false), is((ScreenView) topScreenView));
117 verify(resultListener, never()).accept(any(Mode.class));
118 }
119
120 @Test
121 public void testPageUp() {
122 ModeScreenPresenter modeScreenPresenter = createModeScreenPresenter(Mode.REGION);
123
124 modeScreenPresenter.pageUp();
125
126 assertThat(modeScreenPresenter.transitionToNextScreen(true), is((ScreenView) topScreenView));
127 verify(resultListener).accept(eq(Mode.values()[0]));
128 }
129
130 @Test
131 public void testPageDown() {
132 ModeScreenPresenter modeScreenPresenter = createModeScreenPresenter(Mode.REGION);
133
134 modeScreenPresenter.pageDown();
135
136 assertThat(modeScreenPresenter.transitionToNextScreen(true), is((ScreenView) topScreenView));
137 Mode[] modes = Mode.values();
138 verify(resultListener).accept(eq(modes[modes.length - 1]));
139 }
140 }