| 
				
			 | 
			
			
				@@ -0,0 +1,92 @@ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				1
			 | 
			
			
				+package com.reactnativenavigation.viewcontrollers; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				2
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				3
			 | 
			
			
				+import android.app.Activity; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				4
			 | 
			
			
				+import android.support.annotation.NonNull; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				5
			 | 
			
			
				+import android.support.design.widget.BottomNavigationView; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				6
			 | 
			
			
				+import android.view.MenuItem; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				7
			 | 
			
			
				+import android.view.View; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				8
			 | 
			
			
				+import android.widget.RelativeLayout; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				9
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				10
			 | 
			
			
				+import com.reactnativenavigation.BaseTest; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				11
			 | 
			
			
				+import com.reactnativenavigation.mocks.SimpleViewController; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				12
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				13
			 | 
			
			
				+import org.junit.Test; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				14
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				15
			 | 
			
			
				+import java.util.ArrayList; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				16
			 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				17
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				18
			 | 
			
			
				+import static org.assertj.core.api.Java6Assertions.assertThat; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				19
			 | 
			
			
				+import static org.mockito.Mockito.mock; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				20
			 | 
			
			
				+import static org.mockito.Mockito.when; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				21
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				22
			 | 
			
			
				+public class BottomTabsControllerTest extends BaseTest { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				23
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				24
			 | 
			
			
				+	private Activity activity; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				25
			 | 
			
			
				+	private BottomTabsController uut; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				26
			 | 
			
			
				+	private ViewController child1; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				27
			 | 
			
			
				+	private ViewController child2; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				28
			 | 
			
			
				+	private ViewController child3; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				29
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				30
			 | 
			
			
				+	@Override 
			 | 
		
	
		
			
			| 
				
			 | 
			
				31
			 | 
			
			
				+	public void beforeEach() { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				32
			 | 
			
			
				+		super.beforeEach(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				33
			 | 
			
			
				+		activity = newActivity(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				34
			 | 
			
			
				+		uut = new BottomTabsController(activity, "uut"); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				35
			 | 
			
			
				+		child1 = new SimpleViewController(activity, "child1"); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				36
			 | 
			
			
				+		child2 = new SimpleViewController(activity, "child2"); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				37
			 | 
			
			
				+		child3 = new SimpleViewController(activity, "child3"); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				38
			 | 
			
			
				+	} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				39
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				40
			 | 
			
			
				+	@Test 
			 | 
		
	
		
			
			| 
				
			 | 
			
				41
			 | 
			
			
				+	public void containsRelativeLayoutView() throws Exception { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				42
			 | 
			
			
				+		assertThat(uut.getView()).isInstanceOf(RelativeLayout.class); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				43
			 | 
			
			
				+		assertThat(uut.getView().getChildAt(0)).isInstanceOf(BottomNavigationView.class); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				44
			 | 
			
			
				+	} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				45
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				46
			 | 
			
			
				+	@Test(expected = RuntimeException.class) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				47
			 | 
			
			
				+	public void setTabs_ThrowWhenMoreThan5() throws Exception { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				48
			 | 
			
			
				+		List<ViewController> tabs = createTabs(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				49
			 | 
			
			
				+		tabs.add(new SimpleViewController(activity, "6")); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				50
			 | 
			
			
				+		uut.setTabs(tabs); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				51
			 | 
			
			
				+	} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				52
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				53
			 | 
			
			
				+	@Test 
			 | 
		
	
		
			
			| 
				
			 | 
			
				54
			 | 
			
			
				+	public void setTabs_AddAllViewsAsGoneExceptFirst() throws Exception { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				55
			 | 
			
			
				+		List<ViewController> tabs = createTabs(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				56
			 | 
			
			
				+		uut.setTabs(tabs); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				57
			 | 
			
			
				+		assertThat(uut.getView().getChildCount()).isEqualTo(6); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				58
			 | 
			
			
				+		assertThat(uut.getView().getChildAt(1).getVisibility()).isEqualTo(View.VISIBLE); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				59
			 | 
			
			
				+		assertThat(uut.getView().getChildAt(2).getVisibility()).isEqualTo(View.GONE); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				60
			 | 
			
			
				+		assertThat(uut.getView().getChildAt(3).getVisibility()).isEqualTo(View.GONE); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				61
			 | 
			
			
				+		assertThat(uut.getView().getChildAt(4).getVisibility()).isEqualTo(View.GONE); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				62
			 | 
			
			
				+		assertThat(uut.getView().getChildAt(5).getVisibility()).isEqualTo(View.GONE); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				63
			 | 
			
			
				+	} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				64
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				65
			 | 
			
			
				+	@Test 
			 | 
		
	
		
			
			| 
				
			 | 
			
				66
			 | 
			
			
				+	public void onTabSelected_SelectsTab() throws Exception { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				67
			 | 
			
			
				+		uut.setTabs(createTabs()); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				68
			 | 
			
			
				+		assertThat(uut.getSelectedIndex()).isZero(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				69
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				70
			 | 
			
			
				+		MenuItem menuItem = mock(MenuItem.class); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				71
			 | 
			
			
				+		when(menuItem.getItemId()).thenReturn(3); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				72
			 | 
			
			
				+		assertThat(uut.onNavigationItemSelected(menuItem)).isTrue(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				73
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				74
			 | 
			
			
				+		assertThat(uut.getSelectedIndex()).isEqualTo(3); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				75
			 | 
			
			
				+		assertThat(uut.getTabs().get(0).getView().getVisibility()).isEqualTo(View.GONE); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				76
			 | 
			
			
				+		assertThat(uut.getTabs().get(1).getView().getVisibility()).isEqualTo(View.GONE); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				77
			 | 
			
			
				+		assertThat(uut.getTabs().get(2).getView().getVisibility()).isEqualTo(View.GONE); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				78
			 | 
			
			
				+		assertThat(uut.getTabs().get(3).getView().getVisibility()).isEqualTo(View.VISIBLE); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				79
			 | 
			
			
				+		assertThat(uut.getTabs().get(4).getView().getVisibility()).isEqualTo(View.GONE); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				80
			 | 
			
			
				+	} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				81
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				82
			 | 
			
			
				+	@NonNull 
			 | 
		
	
		
			
			| 
				
			 | 
			
				83
			 | 
			
			
				+	private List<ViewController> createTabs() { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				84
			 | 
			
			
				+		List<ViewController> tabs = new ArrayList<>(); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				85
			 | 
			
			
				+		tabs.add(new SimpleViewController(activity, "1")); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				86
			 | 
			
			
				+		tabs.add(new SimpleViewController(activity, "2")); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				87
			 | 
			
			
				+		tabs.add(new SimpleViewController(activity, "3")); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				88
			 | 
			
			
				+		tabs.add(new SimpleViewController(activity, "4")); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				89
			 | 
			
			
				+		tabs.add(new SimpleViewController(activity, "5")); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				90
			 | 
			
			
				+		return tabs; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				91
			 | 
			
			
				+	} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				92
			 | 
			
			
				+} 
			 |