View Javadoc

1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
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 }