001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.apache.hadoop.hbase.hbtop.screen.mode; 019 020import static org.hamcrest.CoreMatchers.is; 021import static org.hamcrest.MatcherAssert.assertThat; 022import static org.mockito.ArgumentMatchers.any; 023import static org.mockito.ArgumentMatchers.eq; 024import static org.mockito.Mockito.never; 025import static org.mockito.Mockito.verify; 026 027import java.util.Arrays; 028import java.util.function.Consumer; 029import org.apache.hadoop.hbase.hbtop.mode.Mode; 030import org.apache.hadoop.hbase.hbtop.screen.top.TopScreenView; 031import org.apache.hadoop.hbase.testclassification.SmallTests; 032import org.junit.jupiter.api.Tag; 033import org.junit.jupiter.api.Test; 034import org.junit.jupiter.api.extension.ExtendWith; 035import org.mockito.Mock; 036import org.mockito.junit.jupiter.MockitoExtension; 037 038@Tag(SmallTests.TAG) 039@ExtendWith(MockitoExtension.class) 040public class TestModeScreenPresenter { 041 042 @Mock 043 private ModeScreenView modeScreenView; 044 045 @Mock 046 private TopScreenView topScreenView; 047 048 @Mock 049 private Consumer<Mode> resultListener; 050 051 private ModeScreenPresenter createModeScreenPresenter(Mode currentMode) { 052 return new ModeScreenPresenter(modeScreenView, currentMode, resultListener, topScreenView); 053 } 054 055 @Test 056 public void testInit() { 057 ModeScreenPresenter modeScreenPresenter = createModeScreenPresenter(Mode.REGION); 058 059 modeScreenPresenter.init(); 060 061 int modeHeaderMaxLength = Mode.REGION_SERVER.getHeader().length(); 062 int modeDescriptionMaxLength = Mode.REGION_SERVER.getDescription().length(); 063 064 verify(modeScreenView).showModeScreen(eq(Mode.REGION), eq(Arrays.asList(Mode.values())), 065 eq(Mode.REGION.ordinal()), eq(modeHeaderMaxLength), eq(modeDescriptionMaxLength)); 066 } 067 068 @Test 069 public void testSelectNamespaceMode() { 070 ModeScreenPresenter modeScreenPresenter = createModeScreenPresenter(Mode.REGION); 071 072 modeScreenPresenter.arrowUp(); 073 modeScreenPresenter.arrowUp(); 074 075 assertThat(modeScreenPresenter.transitionToNextScreen(true), is(topScreenView)); 076 verify(resultListener).accept(eq(Mode.NAMESPACE)); 077 } 078 079 @Test 080 public void testSelectTableMode() { 081 ModeScreenPresenter modeScreenPresenter = createModeScreenPresenter(Mode.REGION); 082 083 modeScreenPresenter.arrowUp(); 084 assertThat(modeScreenPresenter.transitionToNextScreen(true), is(topScreenView)); 085 verify(resultListener).accept(eq(Mode.TABLE)); 086 } 087 088 @Test 089 public void testSelectRegionMode() { 090 ModeScreenPresenter modeScreenPresenter = createModeScreenPresenter(Mode.NAMESPACE); 091 092 modeScreenPresenter.arrowDown(); 093 modeScreenPresenter.arrowDown(); 094 095 assertThat(modeScreenPresenter.transitionToNextScreen(true), is(topScreenView)); 096 verify(resultListener).accept(eq(Mode.REGION)); 097 } 098 099 @Test 100 public void testSelectRegionServerMode() { 101 ModeScreenPresenter modeScreenPresenter = createModeScreenPresenter(Mode.REGION); 102 103 modeScreenPresenter.arrowDown(); 104 105 assertThat(modeScreenPresenter.transitionToNextScreen(true), is(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(topScreenView)); 117 verify(resultListener, never()).accept(any()); 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(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(topScreenView)); 137 Mode[] modes = Mode.values(); 138 verify(resultListener).accept(eq(modes[modes.length - 1])); 139 } 140}