Guy Carmeli 6 years ago
parent
commit
1320246bc5

+ 1
- 1
lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/StackController.java View File

@@ -263,7 +263,7 @@ public class StackController extends ParentController<StackLayout> {
263 263
 
264 264
     @RestrictTo(RestrictTo.Scope.TESTS)
265 265
     TopBar getTopBar() {
266
-        return topBarController.getTopBar();
266
+        return topBarController.getView();
267 267
     }
268 268
 
269 269
     @RestrictTo(RestrictTo.Scope.TESTS)

+ 7
- 3
lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/topbar/TopBarController.java View File

@@ -16,19 +16,23 @@ import com.reactnativenavigation.views.topbar.TopBarBackgroundViewCreator;
16 16
 public class TopBarController {
17 17
     private TopBar topBar;
18 18
 
19
-    public View createTopBar(Context context, ReactViewCreator buttonCreator, TitleBarReactViewCreator titleBarReactViewCreator, TopBarBackgroundViewCreator backgroundViewCreator, TopBarButtonController.OnClickListener topBarButtonClickListener, StackLayout stackLayout) {
19
+    public View createView(Context context, ReactViewCreator buttonCreator, TitleBarReactViewCreator titleBarReactViewCreator, TopBarBackgroundViewCreator backgroundViewCreator, TopBarButtonController.OnClickListener topBarButtonClickListener, StackLayout stackLayout) {
20 20
         if (topBar == null) {
21
-            topBar = new TopBar(context, buttonCreator, titleBarReactViewCreator, backgroundViewCreator, topBarButtonClickListener, stackLayout);
21
+            topBar = createTopBar(context, buttonCreator, titleBarReactViewCreator, backgroundViewCreator, topBarButtonClickListener, stackLayout);
22 22
             topBar.setId(CompatUtils.generateViewId());
23 23
         }
24 24
         return topBar;
25 25
     }
26 26
 
27
+    protected TopBar createTopBar(Context context, ReactViewCreator buttonCreator, TitleBarReactViewCreator titleBarReactViewCreator, TopBarBackgroundViewCreator backgroundViewCreator, TopBarButtonController.OnClickListener topBarButtonClickListener, StackLayout stackLayout) {
28
+        return new TopBar(context, buttonCreator, titleBarReactViewCreator, backgroundViewCreator, topBarButtonClickListener, stackLayout);
29
+    }
30
+
27 31
     public void clear() {
28 32
         topBar.clear();
29 33
     }
30 34
 
31
-    public TopBar getTopBar() {
35
+    public TopBar getView() {
32 36
         return topBar;
33 37
     }
34 38
 

+ 2
- 2
lib/android/app/src/main/java/com/reactnativenavigation/views/StackLayout.java View File

@@ -25,12 +25,12 @@ public class StackLayout extends RelativeLayout {
25 25
         super(context);
26 26
         this.stackId = stackId;
27 27
         createLayout(topBarButtonCreator, titleBarReactViewCreator, topBarBackgroundViewCreator, topBarController, topBarButtonClickListener);
28
-        optionsPresenter = new OptionsPresenter(topBarController.getTopBar());
28
+        optionsPresenter = new OptionsPresenter(topBarController.getView());
29 29
         setContentDescription("StackLayout");
30 30
     }
31 31
 
32 32
     private void createLayout(ReactViewCreator buttonCreator, TitleBarReactViewCreator titleBarReactViewCreator, TopBarBackgroundViewCreator BackgroundViewCreator, TopBarController topBarController, TopBarButtonController.OnClickListener topBarButtonClickListener) {
33
-        addView(topBarController.createTopBar(getContext(), buttonCreator, titleBarReactViewCreator, BackgroundViewCreator, topBarButtonClickListener, this), MATCH_PARENT, WRAP_CONTENT);
33
+        addView(topBarController.createView(getContext(), buttonCreator, titleBarReactViewCreator, BackgroundViewCreator, topBarButtonClickListener, this), MATCH_PARENT, WRAP_CONTENT);
34 34
     }
35 35
 
36 36
     public void applyChildOptions(Options options) {

+ 53
- 0
lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/TopBarControllerTest.java View File

@@ -0,0 +1,53 @@
1
+package com.reactnativenavigation.viewcontrollers;
2
+
3
+import android.content.Context;
4
+import android.support.annotation.NonNull;
5
+
6
+import com.reactnativenavigation.BaseTest;
7
+import com.reactnativenavigation.mocks.TitleBarReactViewCreatorMock;
8
+import com.reactnativenavigation.mocks.TopBarBackgroundViewCreatorMock;
9
+import com.reactnativenavigation.mocks.TopBarButtonCreatorMock;
10
+import com.reactnativenavigation.viewcontrollers.topbar.TopBarController;
11
+import com.reactnativenavigation.views.StackLayout;
12
+import com.reactnativenavigation.views.titlebar.TitleBar;
13
+import com.reactnativenavigation.views.titlebar.TitleBarReactViewCreator;
14
+import com.reactnativenavigation.views.topbar.TopBar;
15
+import com.reactnativenavigation.views.topbar.TopBarBackgroundViewCreator;
16
+
17
+import org.junit.Test;
18
+import org.mockito.Mockito;
19
+
20
+import static org.mockito.Mockito.spy;
21
+import static org.mockito.Mockito.times;
22
+import static org.mockito.Mockito.verify;
23
+
24
+public class TopBarControllerTest extends BaseTest {
25
+
26
+    private TopBarController uut;
27
+
28
+    @Override
29
+    public void beforeEach() {
30
+        uut = new TopBarController();
31
+    }
32
+
33
+    @Test
34
+    public void clear() {
35
+        final TitleBar[] titleBar = new TitleBar[1];
36
+        uut = new TopBarController() {
37
+            @NonNull
38
+            @Override
39
+            protected TopBar createTopBar(Context context, ReactViewCreator buttonCreator, TitleBarReactViewCreator titleBarReactViewCreator, TopBarBackgroundViewCreator backgroundViewCreator, TopBarButtonController.OnClickListener topBarButtonClickListener, StackLayout stackLayout) {
40
+                return new TopBar(context, buttonCreator, titleBarReactViewCreator, backgroundViewCreator, topBarButtonClickListener, stackLayout) {
41
+                    @Override
42
+                    protected TitleBar createTitleBar(Context context, ReactViewCreator buttonCreator, TitleBarReactViewCreator reactViewCreator, TopBarButtonController.OnClickListener onClickListener) {
43
+                        titleBar[0] = spy(super.createTitleBar(context, buttonCreator, reactViewCreator, onClickListener));
44
+                        return titleBar[0];
45
+                    }
46
+                };
47
+            }
48
+        };
49
+        uut.createView(newActivity(), new TopBarButtonCreatorMock(), new TitleBarReactViewCreatorMock(), new TopBarBackgroundViewCreatorMock(), buttonId -> { }, Mockito.mock(StackLayout.class));
50
+        uut.clear();
51
+        verify(titleBar[0], times(1)).clear();
52
+    }
53
+}