Daniel Zlotin 8 years ago
parent
commit
104385d975

+ 38
- 22
lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/NavigatorTest.java View File

@@ -1,11 +1,13 @@
1 1
 package com.reactnativenavigation.viewcontrollers;
2 2
 
3 3
 import android.app.Activity;
4
+import android.support.annotation.NonNull;
4 5
 import android.view.ViewGroup;
5 6
 
6 7
 import com.reactnativenavigation.BaseTest;
7 8
 import com.reactnativenavigation.mocks.SimpleViewController;
8 9
 import com.reactnativenavigation.mocks.TestStackAnimator;
10
+import com.reactnativenavigation.utils.CompatUtils;
9 11
 
10 12
 import org.junit.Test;
11 13
 import org.robolectric.Shadows;
@@ -20,6 +22,8 @@ public class NavigatorTest extends BaseTest {
20 22
 	private ViewController child1;
21 23
 	private ViewController child2;
22 24
 	private ViewController child3;
25
+	private ViewController child4;
26
+	private ViewController child5;
23 27
 
24 28
 	@Override
25 29
 	public void beforeEach() {
@@ -29,6 +33,8 @@ public class NavigatorTest extends BaseTest {
29 33
 		child1 = new SimpleViewController(activity, "child1");
30 34
 		child2 = new SimpleViewController(activity, "child2");
31 35
 		child3 = new SimpleViewController(activity, "child3");
36
+		child4 = new SimpleViewController(activity, "child4");
37
+		child5 = new SimpleViewController(activity, "child5");
32 38
 	}
33 39
 
34 40
 
@@ -72,7 +78,7 @@ public class NavigatorTest extends BaseTest {
72 78
 
73 79
 	@Test
74 80
 	public void push() throws Exception {
75
-		StackController stackController = new StackController(activity, "stack1", new TestStackAnimator());
81
+		StackController stackController = newStack();
76 82
 		stackController.push(child1);
77 83
 		uut.setRoot(stackController);
78 84
 
@@ -94,9 +100,9 @@ public class NavigatorTest extends BaseTest {
94 100
 
95 101
 	@Test
96 102
 	public void push_OnCorrectStackByFindingChildId() throws Exception {
97
-		BottomTabsController bottomTabsController = new BottomTabsController(activity, "tabsController");
98
-		StackController stack1 = new StackController(activity, "stack1", new TestStackAnimator());
99
-		StackController stack2 = new StackController(activity, "stack2", new TestStackAnimator());
103
+		BottomTabsController bottomTabsController = newTabs();
104
+		StackController stack1 = newStack();
105
+		StackController stack2 = newStack();
100 106
 		stack1.push(child1);
101 107
 		stack2.push(child2);
102 108
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
@@ -114,17 +120,18 @@ public class NavigatorTest extends BaseTest {
114 120
 		uut.pop("123");
115 121
 		uut.setRoot(child1);
116 122
 		uut.pop(child1.getId());
123
+		assertThat(uut.getChildControllers()).hasSize(1);
117 124
 	}
118 125
 
119 126
 	@Test
120 127
 	public void pop_FromCorrectStackByFindingChildId() throws Exception {
121
-		BottomTabsController bottomTabsController = new BottomTabsController(activity, "tabsController");
122
-		StackController stack1 = new StackController(activity, "stack1", new TestStackAnimator());
123
-		StackController stack2 = new StackController(activity, "stack2", new TestStackAnimator());
128
+		BottomTabsController bottomTabsController = newTabs();
129
+		StackController stack1 = newStack();
130
+		StackController stack2 = newStack();
124 131
 		stack1.push(child1);
125 132
 		stack2.push(child2);
126 133
 		stack2.push(child3);
127
-		stack2.push(new SimpleViewController(activity, "child4"));
134
+		stack2.push(child4);
128 135
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
129 136
 		uut.setRoot(bottomTabsController);
130 137
 
@@ -135,13 +142,12 @@ public class NavigatorTest extends BaseTest {
135 142
 
136 143
 	@Test
137 144
 	public void popSpecific() throws Exception {
138
-		BottomTabsController bottomTabsController = new BottomTabsController(activity, "tabsController");
139
-		StackController stack1 = new StackController(activity, "stack1", new TestStackAnimator());
140
-		StackController stack2 = new StackController(activity, "stack2", new TestStackAnimator());
145
+		BottomTabsController bottomTabsController = newTabs();
146
+		StackController stack1 = newStack();
147
+		StackController stack2 = newStack();
141 148
 		stack1.push(child1);
142 149
 		stack2.push(child2);
143 150
 		stack2.push(child3);
144
-		SimpleViewController child4 = new SimpleViewController(activity, "child4");
145 151
 		stack2.push(child4);
146 152
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
147 153
 		uut.setRoot(bottomTabsController);
@@ -153,14 +159,14 @@ public class NavigatorTest extends BaseTest {
153 159
 
154 160
 	@Test
155 161
 	public void popTo_FromCorrectStackUpToChild() throws Exception {
156
-		BottomTabsController bottomTabsController = new BottomTabsController(activity, "tabsController");
157
-		StackController stack1 = new StackController(activity, "stack1", new TestStackAnimator());
158
-		StackController stack2 = new StackController(activity, "stack2", new TestStackAnimator());
162
+		BottomTabsController bottomTabsController = newTabs();
163
+		StackController stack1 = newStack();
164
+		StackController stack2 = newStack();
159 165
 		stack1.push(child1);
160 166
 		stack2.push(child2);
161 167
 		stack2.push(child3);
162
-		stack2.push(new SimpleViewController(activity, "child4"));
163
-		stack2.push(new SimpleViewController(activity, "child5"));
168
+		stack2.push(child4);
169
+		stack2.push(child5);
164 170
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
165 171
 		uut.setRoot(bottomTabsController);
166 172
 
@@ -171,14 +177,14 @@ public class NavigatorTest extends BaseTest {
171 177
 
172 178
 	@Test
173 179
 	public void popToRoot() throws Exception {
174
-		BottomTabsController bottomTabsController = new BottomTabsController(activity, "tabsController");
175
-		StackController stack1 = new StackController(activity, "stack1", new TestStackAnimator());
176
-		StackController stack2 = new StackController(activity, "stack2", new TestStackAnimator());
180
+		BottomTabsController bottomTabsController = newTabs();
181
+		StackController stack1 = newStack();
182
+		StackController stack2 = newStack();
177 183
 		stack1.push(child1);
178 184
 		stack2.push(child2);
179 185
 		stack2.push(child3);
180
-		stack2.push(new SimpleViewController(activity, "child4"));
181
-		stack2.push(new SimpleViewController(activity, "child5"));
186
+		stack2.push(child4);
187
+		stack2.push(child5);
182 188
 
183 189
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
184 190
 		uut.setRoot(bottomTabsController);
@@ -188,8 +194,18 @@ public class NavigatorTest extends BaseTest {
188 194
 		assertThat(stack2.getChildControllers()).containsOnly(child2);
189 195
 	}
190 196
 
197
+	@NonNull
198
+	private BottomTabsController newTabs() {
199
+		return new BottomTabsController(activity, "tabsController");
200
+	}
201
+
191 202
 	private void assertHasSingleChildViewOf(ViewController parent, ViewController child) {
192 203
 		assertThat(((ViewGroup) parent.getView()).getChildCount()).isEqualTo(1);
193 204
 		assertThat(((ViewGroup) parent.getView()).getChildAt(0)).isEqualTo(child.getView()).isNotNull();
194 205
 	}
206
+
207
+	@NonNull
208
+	private StackController newStack() {
209
+		return new StackController(activity, "stack" + CompatUtils.generateViewId(), new TestStackAnimator());
210
+	}
195 211
 }