Guy Carmeli 6 years ago
parent
commit
1320246bc5

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

263
 
263
 
264
     @RestrictTo(RestrictTo.Scope.TESTS)
264
     @RestrictTo(RestrictTo.Scope.TESTS)
265
     TopBar getTopBar() {
265
     TopBar getTopBar() {
266
-        return topBarController.getTopBar();
266
+        return topBarController.getView();
267
     }
267
     }
268
 
268
 
269
     @RestrictTo(RestrictTo.Scope.TESTS)
269
     @RestrictTo(RestrictTo.Scope.TESTS)

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

16
 public class TopBarController {
16
 public class TopBarController {
17
     private TopBar topBar;
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
         if (topBar == null) {
20
         if (topBar == null) {
21
-            topBar = new TopBar(context, buttonCreator, titleBarReactViewCreator, backgroundViewCreator, topBarButtonClickListener, stackLayout);
21
+            topBar = createTopBar(context, buttonCreator, titleBarReactViewCreator, backgroundViewCreator, topBarButtonClickListener, stackLayout);
22
             topBar.setId(CompatUtils.generateViewId());
22
             topBar.setId(CompatUtils.generateViewId());
23
         }
23
         }
24
         return topBar;
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
     public void clear() {
31
     public void clear() {
28
         topBar.clear();
32
         topBar.clear();
29
     }
33
     }
30
 
34
 
31
-    public TopBar getTopBar() {
35
+    public TopBar getView() {
32
         return topBar;
36
         return topBar;
33
     }
37
     }
34
 
38
 

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

25
         super(context);
25
         super(context);
26
         this.stackId = stackId;
26
         this.stackId = stackId;
27
         createLayout(topBarButtonCreator, titleBarReactViewCreator, topBarBackgroundViewCreator, topBarController, topBarButtonClickListener);
27
         createLayout(topBarButtonCreator, titleBarReactViewCreator, topBarBackgroundViewCreator, topBarController, topBarButtonClickListener);
28
-        optionsPresenter = new OptionsPresenter(topBarController.getTopBar());
28
+        optionsPresenter = new OptionsPresenter(topBarController.getView());
29
         setContentDescription("StackLayout");
29
         setContentDescription("StackLayout");
30
     }
30
     }
31
 
31
 
32
     private void createLayout(ReactViewCreator buttonCreator, TitleBarReactViewCreator titleBarReactViewCreator, TopBarBackgroundViewCreator BackgroundViewCreator, TopBarController topBarController, TopBarButtonController.OnClickListener topBarButtonClickListener) {
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
     public void applyChildOptions(Options options) {
36
     public void applyChildOptions(Options options) {

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

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
+}