react-native-navigation 7.24.0 → 7.24.3-snapshot.492

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/lib/Mock/Components/ComponentScreen.tsx +1 -1
  2. package/lib/Mock/Components/NavigationButton.tsx +1 -1
  3. package/lib/Mock/Components/TopBar.tsx +6 -2
  4. package/lib/android/app/build.gradle +12 -9
  5. package/lib/android/app/src/main/java/com/reactnativenavigation/react/ReactView.java +13 -9
  6. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/SystemUiUtils.kt +3 -2
  7. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +1 -0
  8. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +2 -0
  9. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenter.java +4 -6
  10. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +2 -4
  11. package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabs.java +6 -0
  12. package/lib/dist/Mock/Components/ComponentScreen.js +2 -2
  13. package/lib/dist/Mock/Components/NavigationButton.d.ts +1 -1
  14. package/lib/dist/Mock/Components/NavigationButton.js +3 -3
  15. package/lib/dist/Mock/Components/TopBar.d.ts +1 -2
  16. package/lib/dist/Mock/Components/TopBar.js +3 -3
  17. package/lib/ios/RNNComponentRootView.m +0 -14
  18. package/package.json +1 -1
  19. package/.buildkite/pipeline.yml +0 -59
  20. package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +0 -178
  21. package/lib/android/app/src/test/java/com/reactnativenavigation/EnvironmentTest.java +0 -43
  22. package/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java +0 -23
  23. package/lib/android/app/src/test/java/com/reactnativenavigation/TestApplication.java +0 -35
  24. package/lib/android/app/src/test/java/com/reactnativenavigation/TestUtils.java +0 -62
  25. package/lib/android/app/src/test/java/com/reactnativenavigation/fakes/IconResolverFake.kt +0 -8
  26. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/BackDrawable.java +0 -30
  27. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/ImageLoaderMock.kt +0 -49
  28. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/Mocks.kt +0 -18
  29. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleComponentViewController.java +0 -15
  30. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleOverlay.java +0 -54
  31. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleViewController.java +0 -113
  32. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentLayout.java +0 -79
  33. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentViewCreator.java +0 -18
  34. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestReactView.java +0 -71
  35. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarButtonCreatorMock.java +0 -34
  36. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarReactViewCreatorMock.java +0 -20
  37. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TopBarBackgroundViewCreatorMock.java +0 -20
  38. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TypefaceLoaderMock.kt +0 -21
  39. package/lib/android/app/src/test/java/com/reactnativenavigation/options/LayoutNodeParserTest.java +0 -51
  40. package/lib/android/app/src/test/java/com/reactnativenavigation/options/OptionsTest.java +0 -315
  41. package/lib/android/app/src/test/java/com/reactnativenavigation/options/OrientationOptionsTest.java +0 -81
  42. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TopBarButtonsTest.kt +0 -95
  43. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TransitionAnimationOptionsTest.kt +0 -122
  44. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/BoolParserTest.java +0 -28
  45. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/ColorParseTest.java +0 -50
  46. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/JSONParserTest.java +0 -64
  47. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/PresenterTest.java +0 -56
  48. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/RenderCheckerTest.java +0 -59
  49. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/SideMenuPresenterTest.java +0 -35
  50. package/lib/android/app/src/test/java/com/reactnativenavigation/react/NavigationModuleTest.java +0 -102
  51. package/lib/android/app/src/test/java/com/reactnativenavigation/react/ReloadListenerTest.java +0 -24
  52. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/AnimationHelper.kt +0 -33
  53. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonPresenterTest.java +0 -241
  54. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonSpanTest.java +0 -57
  55. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/CompatUtilsTest.java +0 -17
  56. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/LayoutFactoryTest.java +0 -78
  57. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/MotionEventTest.kt +0 -47
  58. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/NativeCommandListenerTest.java +0 -60
  59. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/OptionHelper.java +0 -16
  60. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ReflectionUtilsTest.java +0 -26
  61. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/StringUtilsTest.java +0 -19
  62. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleAndButtonsMeasurerTest.kt +0 -357
  63. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleBarHelper.java +0 -54
  64. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiThreadTest.java +0 -29
  65. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiUtilsTest.java +0 -22
  66. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ViewHelper.java +0 -9
  67. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/OptionsApplyingTest.java +0 -149
  68. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenterTest.java +0 -206
  69. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAttacherTest.java +0 -62
  70. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt +0 -572
  71. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsPresenterTest.kt +0 -173
  72. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AfterInitialTabTest.java +0 -38
  73. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachModeTest.java +0 -86
  74. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/OnSwitchToTabTest.java +0 -31
  75. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/TogetherTest.java +0 -20
  76. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/button/NavigationIconResolverTest.java +0 -78
  77. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +0 -80
  78. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistryTest.java +0 -56
  79. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewControllerTest.java +0 -191
  80. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/ExternalComponentViewControllerTest.java +0 -97
  81. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/FragmentCreatorMock.java +0 -34
  82. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/SomeFragment.java +0 -8
  83. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/fakes/FakeParentController.kt +0 -33
  84. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorMock.java +0 -40
  85. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorTest.kt +0 -213
  86. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +0 -319
  87. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +0 -368
  88. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +0 -898
  89. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +0 -254
  90. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManagerTest.java +0 -108
  91. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +0 -299
  92. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +0 -446
  93. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/BackButtonHelperTest.java +0 -77
  94. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/FloatingActionButtonTest.java +0 -154
  95. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/IdStackTest.java +0 -114
  96. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +0 -241
  97. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +0 -1165
  98. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +0 -1081
  99. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarButtonControllerTest.java +0 -61
  100. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarReactViewControllerTest.java +0 -43
  101. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarButtonControllerTest.java +0 -120
  102. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +0 -432
  103. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsViewControllerTest.java +0 -247
  104. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerTest.java +0 -337
  105. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegateTest.java +0 -68
  106. package/lib/android/app/src/test/java/com/reactnativenavigation/views/OverlayTouchDelegateTest.java +0 -60
  107. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TitleAndButtonsContainerTest.kt +0 -477
  108. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TopBarTest.java +0 -82
  109. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/BaseViewAnimatorTest.kt +0 -109
  110. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/DefaultViewAnimatorCreatorFake.kt +0 -36
  111. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainerTest.kt +0 -101
  112. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsTest.kt +0 -40
  113. package/lib/android/app/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker +0 -1
@@ -1,54 +0,0 @@
1
- package com.reactnativenavigation.utils;
2
-
3
- import android.app.Activity;
4
-
5
- import com.reactnativenavigation.viewcontrollers.stack.topbar.button.ButtonPresenter;
6
- import com.reactnativenavigation.mocks.ImageLoaderMock;
7
- import com.reactnativenavigation.mocks.TitleBarButtonCreatorMock;
8
- import com.reactnativenavigation.options.ComponentOptions;
9
- import com.reactnativenavigation.options.ButtonOptions;
10
- import com.reactnativenavigation.options.params.Text;
11
- import com.reactnativenavigation.viewcontrollers.stack.topbar.button.ButtonController;
12
- import com.reactnativenavigation.viewcontrollers.stack.topbar.button.IconResolver;
13
-
14
- public class TitleBarHelper {
15
- public static ButtonOptions textualButton(String text) {
16
- ButtonOptions button = new ButtonOptions();
17
- button.id = text + CompatUtils.generateViewId();
18
- button.text = new Text(text);
19
- return button;
20
- }
21
-
22
- public static ButtonOptions reactViewButton(String name) {
23
- ButtonOptions button = new ButtonOptions();
24
- button.id = name + CompatUtils.generateViewId();
25
- button.component = new ComponentOptions();
26
- button.component.name = new Text("com.example" + name + CompatUtils.generateViewId());
27
- button.component.componentId = new Text(name + CompatUtils.generateViewId());
28
- return button;
29
- }
30
-
31
- public static ComponentOptions titleComponent(String componentId) {
32
- ComponentOptions component = new ComponentOptions();
33
- component.componentId = new Text(componentId);
34
- component.name = new Text(componentId);
35
- return component;
36
- }
37
-
38
- public static ButtonOptions iconButton(String id, String icon) {
39
- ButtonOptions button = new ButtonOptions();
40
- button.id = "someButton";
41
- button.icon = new Text(icon);
42
- return button;
43
- }
44
-
45
-
46
- public static ButtonController createButtonController(Activity activity, ButtonOptions button) {
47
- return new ButtonController(activity,
48
- new ButtonPresenter(activity, button, new IconResolver(activity, ImageLoaderMock.mock())),
49
- button,
50
- new TitleBarButtonCreatorMock(),
51
- buttonId -> {}
52
- );
53
- }
54
- }
@@ -1,29 +0,0 @@
1
- package com.reactnativenavigation.utils;
2
-
3
- import com.reactnativenavigation.*;
4
-
5
- import org.junit.*;
6
- import org.robolectric.shadows.*;
7
-
8
- import static org.mockito.Mockito.*;
9
-
10
- public class UiThreadTest extends BaseTest {
11
- @Test
12
- public void postOnUiThread() throws Exception {
13
- Runnable task = mock(Runnable.class);
14
- ShadowLooper.pauseMainLooper();
15
- UiThread.post(task);
16
- verifyNoInteractions(task);
17
- ShadowLooper.runUiThreadTasks();
18
- verify(task, times(1)).run();
19
- }
20
-
21
- @Test
22
- public void postDelayedOnUiThread() throws Exception {
23
- Runnable task = mock(Runnable.class);
24
- UiThread.postDelayed(task, 1000);
25
- verifyNoInteractions(task);
26
- ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
27
- verify(task, times(1)).run();
28
- }
29
- }
@@ -1,22 +0,0 @@
1
- package com.reactnativenavigation.utils;
2
-
3
- import android.view.*;
4
-
5
- import com.reactnativenavigation.*;
6
-
7
- import org.junit.*;
8
-
9
- import static org.mockito.Mockito.*;
10
-
11
- public class UiUtilsTest extends BaseTest {
12
- @Test
13
- public void runOnPreDrawOnce() {
14
- View view = new View(newActivity());
15
- Runnable task = mock(Runnable.class);
16
- verifyNoInteractions(task);
17
-
18
- UiUtils.runOnPreDrawOnce(view, task);
19
- dispatchPreDraw(view);
20
- verify(task, times(1)).run();
21
- }
22
- }
@@ -1,9 +0,0 @@
1
- package com.reactnativenavigation.utils;
2
-
3
- import android.view.View;
4
-
5
- public class ViewHelper {
6
- public static boolean isVisible(View view) {
7
- return view != null && view.getParent() != null && view.getVisibility() == View.VISIBLE;
8
- }
9
- }
@@ -1,149 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers;
2
-
3
- import android.app.Activity;
4
- import android.content.Context;
5
- import android.content.res.Configuration;
6
- import android.graphics.Color;
7
- import android.graphics.drawable.ColorDrawable;
8
- import android.view.View;
9
- import android.widget.RelativeLayout;
10
-
11
- import com.reactnativenavigation.BaseTest;
12
- import com.reactnativenavigation.TestUtils;
13
- import com.reactnativenavigation.mocks.TestComponentLayout;
14
- import com.reactnativenavigation.mocks.TestReactView;
15
- import com.reactnativenavigation.options.Options;
16
- import com.reactnativenavigation.options.params.Bool;
17
- import com.reactnativenavigation.options.params.Colour;
18
- import com.reactnativenavigation.options.params.ThemeColour;
19
- import com.reactnativenavigation.options.params.Text;
20
- import com.reactnativenavigation.viewcontrollers.component.ComponentPresenter;
21
- import com.reactnativenavigation.viewcontrollers.viewcontroller.Presenter;
22
- import com.reactnativenavigation.react.CommandListenerAdapter;
23
- import com.reactnativenavigation.viewcontrollers.child.ChildControllersRegistry;
24
- import com.reactnativenavigation.viewcontrollers.component.ComponentViewController;
25
- import com.reactnativenavigation.viewcontrollers.stack.StackController;
26
- import com.reactnativenavigation.viewcontrollers.stack.topbar.TopBarController;
27
- import com.reactnativenavigation.viewcontrollers.viewcontroller.IReactView;
28
- import com.reactnativenavigation.views.stack.StackLayout;
29
- import com.reactnativenavigation.views.stack.topbar.TopBar;
30
-
31
- import org.junit.Test;
32
-
33
- import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
34
- import static org.assertj.core.api.Java6Assertions.assertThat;
35
- import static org.mockito.Mockito.spy;
36
-
37
- public class OptionsApplyingTest extends BaseTest {
38
- private Activity activity;
39
- private StackController stack;
40
- private ComponentViewController uut;
41
- private IReactView view;
42
- private Options initialNavigationOptions;
43
- private TopBar topBar;
44
-
45
- @Override
46
- public void beforeEach() {
47
- super.beforeEach();
48
- activity = newActivity();
49
- initialNavigationOptions = new Options();
50
- view = spy(new TestComponentLayout(activity, new TestReactView(activity)));
51
- view.asView().setLayoutParams(new RelativeLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT));
52
- uut = new ComponentViewController(activity,
53
- new ChildControllersRegistry(),
54
- "componentId1",
55
- "componentName",
56
- (activity1, componentId, componentName) -> view,
57
- initialNavigationOptions,
58
- new Presenter(activity, new Options()),
59
- new ComponentPresenter(Options.EMPTY)
60
- ) {
61
- @Override
62
- public boolean isViewShown() {
63
- return true;
64
- }
65
- };
66
- TopBarController topBarController = new TopBarController() {
67
- @Override
68
- protected TopBar createTopBar(Context context, StackLayout stackLayout) {
69
- topBar = spy(super.createTopBar(context, stackLayout));
70
- return topBar;
71
- }
72
- };
73
- stack = TestUtils.newStackController(activity)
74
- .setTopBarController(topBarController)
75
- .build();
76
- stack.ensureViewIsCreated();
77
- stack.getView().layout(0, 0, 1000, 1000);
78
- stack.getTopBar().layout(0, 0, 1000, 100);
79
- activity.setContentView(stack.getView());
80
- disablePushAnimation(uut);
81
- }
82
-
83
- @SuppressWarnings("ConstantConditions")
84
- @Test
85
- public void applyNavigationOptionsHandlesNoParentStack() {
86
- uut.setParentController(null);
87
- assertThat(uut.getParentController()).isNull();
88
- uut.ensureViewIsCreated();
89
- uut.onViewWillAppear();
90
- assertThat(uut.getParentController()).isNull();
91
- }
92
-
93
- @Test
94
- public void initialOptionsAppliedOnAppear() {
95
- uut.options.topBar.title.text = new Text("the title");
96
- StackController stackController = TestUtils.newStackController(activity).build();
97
- stackController.ensureViewIsCreated();
98
- stackController.push(uut, new CommandListenerAdapter());
99
- assertThat(stackController.getTopBar().getTitle()).isEmpty();
100
-
101
- uut.onViewWillAppear();
102
- assertThat(stackController.getTopBar().getTitle()).isEqualTo("the title");
103
- }
104
-
105
- @Test
106
- public void mergeNavigationOptionsUpdatesCurrentOptions() {
107
- assertThat(uut.options.topBar.title.text.get("")).isEmpty();
108
- Options options = new Options();
109
- options.topBar.title.text = new Text("new title");
110
- uut.mergeOptions(options);
111
- assertThat(uut.options.topBar.title.text.get()).isEqualTo("new title");
112
- }
113
-
114
- @Test
115
- public void reappliesOptionsOnMerge() {
116
- assertThat(stack.getTopBar().getTitle()).isEmpty();
117
- stack.push(uut, new CommandListenerAdapter());
118
-
119
- Options opts = new Options();
120
- opts.topBar.title.text = new Text("the new title");
121
- uut.mergeOptions(opts);
122
-
123
- assertThat(stack.getTopBar().getTitle()).isEqualTo("the new title");
124
- }
125
-
126
- @Test
127
- public void appliesTopBackBackgroundColor() {
128
- uut.options.topBar.background.color = new ThemeColour(new Colour(Color.RED));
129
- stack.push(uut, new CommandListenerAdapter());
130
- idleMainLooper();
131
- assertThat(((ColorDrawable) stack.getTopBar().getBackground()).getColor()).isEqualTo(Color.RED);
132
- }
133
-
134
- @Test
135
- public void appliesTopBarVisible() {
136
- stack.push(uut, new CommandListenerAdapter());
137
-
138
- assertThat(uut.initialOptions).isSameAs(initialNavigationOptions);
139
- initialNavigationOptions.topBar.title.text = new Text("the title");
140
- assertThat(stack.getTopBar().getVisibility()).isNotEqualTo(View.GONE);
141
-
142
- Options opts = new Options();
143
- opts.topBar.visible = new Bool(false);
144
- opts.topBar.animate = new Bool(false);
145
- uut.mergeOptions(opts);
146
-
147
- assertThat(stack.getTopBar().getVisibility()).isEqualTo(View.GONE);
148
- }
149
- }
@@ -1,206 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.bottomtabs;
2
-
3
- import android.app.Activity;
4
- import android.content.res.Configuration;
5
- import android.graphics.Color;
6
-
7
- import com.aurelhubert.ahbottomnavigation.notification.AHNotification;
8
- import com.reactnativenavigation.BaseTest;
9
- import com.reactnativenavigation.mocks.ImageLoaderMock;
10
- import com.reactnativenavigation.mocks.SimpleViewController;
11
- import com.reactnativenavigation.mocks.TypefaceLoaderMock;
12
- import com.reactnativenavigation.options.Options;
13
- import com.reactnativenavigation.options.params.Colour;
14
- import com.reactnativenavigation.options.params.DontApplyColour;
15
- import com.reactnativenavigation.options.params.NullText;
16
- import com.reactnativenavigation.options.params.NullThemeColour;
17
- import com.reactnativenavigation.options.params.ThemeColour;
18
- import com.reactnativenavigation.options.params.Text;
19
- import com.reactnativenavigation.viewcontrollers.child.ChildControllersRegistry;
20
- import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
21
- import com.reactnativenavigation.views.bottomtabs.BottomTabs;
22
-
23
- import org.junit.Test;
24
- import org.mockito.ArgumentCaptor;
25
- import org.mockito.InOrder;
26
- import org.mockito.Mockito;
27
-
28
- import java.util.Arrays;
29
- import java.util.List;
30
-
31
- import static com.reactnativenavigation.utils.CollectionUtils.*;
32
- import static org.assertj.core.api.Assertions.assertThat;
33
- import static org.mockito.ArgumentMatchers.any;
34
- import static org.mockito.ArgumentMatchers.anyInt;
35
- import static org.mockito.ArgumentMatchers.eq;
36
- import static org.mockito.Mockito.inOrder;
37
- import static org.mockito.Mockito.never;
38
- import static org.mockito.Mockito.spy;
39
- import static org.mockito.Mockito.times;
40
- import static org.mockito.Mockito.verify;
41
- import static org.mockito.Mockito.verifyNoMoreInteractions;
42
-
43
- public class BottomTabPresenterTest extends BaseTest {
44
- private Options tab1Options = createTab1Options();
45
- private Options tab2Options = createTab2Options();
46
- private BottomTabPresenter uut;
47
- private BottomTabs bottomTabs;
48
- private List<ViewController<?>> tabs;
49
- private ViewController<?> child1;
50
- private ViewController<?> child2;
51
- private ViewController<?> child3;
52
- private Activity activity;
53
- private ChildControllersRegistry childRegistry;
54
-
55
- @Override
56
- public void beforeEach() {
57
- super.beforeEach();
58
- activity = newActivity();
59
- childRegistry = new ChildControllersRegistry();
60
- createBottomTabs(tab1Options,tab2Options,new Options());
61
- }
62
-
63
- private void createBottomTabs(Options tab1Options,
64
- Options tab2Options,Options tab3Options ) {
65
- childRegistry = new ChildControllersRegistry();
66
- bottomTabs = Mockito.mock(BottomTabs.class);
67
- child1 = spy(new SimpleViewController(activity, childRegistry, "child1", tab1Options));
68
- child2 = spy(new SimpleViewController(activity, childRegistry, "child2", tab2Options));
69
- child3 = spy(new SimpleViewController(activity, childRegistry, "child2", tab3Options));
70
- tabs = Arrays.asList(child1, child2, child3);
71
- uut = new BottomTabPresenter(activity, tabs, ImageLoaderMock.mock(), new TypefaceLoaderMock(), new Options());
72
- uut.bindView(bottomTabs);
73
- uut.setDefaultOptions(new Options());
74
- }
75
-
76
- @Test
77
- public void onConfigurationChange_shouldChangeColors(){
78
- Options options = Options.EMPTY;
79
- options.bottomTabOptions.textColor = ThemeColour.of(Color.BLACK,Color.WHITE);
80
- options.bottomTabOptions.selectedTextColor = ThemeColour.of(Color.BLUE,Color.RED);
81
- options.bottomTabOptions.iconColor = ThemeColour.of(Color.BLACK,Color.WHITE);
82
- options.bottomTabOptions.selectedIconColor = ThemeColour.of(Color.BLUE,Color.RED);
83
- options.bottomTabOptions.badgeColor = ThemeColour.of(Color.BLACK,Color.WHITE);
84
- createBottomTabs(options,options,options);
85
-
86
- mockConfiguration.uiMode = Configuration.UI_MODE_NIGHT_NO;
87
- uut.onConfigurationChanged(options);
88
- for(int i=0;i<tabs.size();++i){
89
- verify(bottomTabs).setIconActiveColor(i,Color.BLUE);
90
- verify(bottomTabs).setIconInactiveColor(i,Color.BLACK);
91
-
92
- verify(bottomTabs).setTitleActiveColor(i,Color.BLUE);
93
- verify(bottomTabs).setTitleInactiveColor(i,Color.BLACK);
94
- }
95
-
96
- mockConfiguration.uiMode = Configuration.UI_MODE_NIGHT_YES;
97
- uut.onConfigurationChanged(options);
98
- for(int i=0;i<tabs.size();++i){
99
- verify(bottomTabs).setIconActiveColor(i,Color.RED);
100
- verify(bottomTabs).setIconInactiveColor(i,Color.WHITE);
101
-
102
- verify(bottomTabs).setTitleActiveColor(i,Color.RED);
103
- verify(bottomTabs).setTitleInactiveColor(i,Color.WHITE);
104
- }
105
- }
106
-
107
- @Test
108
- public void present() {
109
- uut.applyOptions();
110
- verify(bottomTabs, times(1)).setNotification(any(AHNotification.class), eq(0));
111
- verify(bottomTabs, times(1)).setNotification(any(AHNotification.class), eq(1));
112
- verify(bottomTabs, never()).setNotification(any(AHNotification.class), eq(2));
113
-
114
- for (int i = 0; i < tabs.size(); i++) {
115
- verify(bottomTabs, times(1)).setTitleInactiveColor(i, tabs.get(i).options.bottomTabOptions.textColor.get(null));
116
- verify(bottomTabs, times(1)).setTitleActiveColor(i, tabs.get(i).options.bottomTabOptions.selectedTextColor.get(null));
117
- }
118
- }
119
-
120
- @Test
121
- public void applyOptions_shouldPresentBadgeIfAvailable() {
122
- final Options tab1 = tab1Options.copy();
123
- tab1.bottomTabOptions.badge = new NullText();
124
- tab1.bottomTabOptions.badgeColor = new NullThemeColour();
125
-
126
- final Options tab2 = tab2Options.copy();
127
- tab2.bottomTabOptions.badge = new Text("Badge");
128
- tab2.bottomTabOptions.badgeColor = ThemeColour.of(Color.RED);
129
-
130
-
131
- createBottomTabs(tab1, tab2, new Options());
132
- uut.applyOptions();
133
-
134
- ArgumentCaptor<AHNotification> notificationArgumentCaptor = ArgumentCaptor.forClass(AHNotification.class);
135
- verify(bottomTabs).setNotification(notificationArgumentCaptor.capture(), eq(1));
136
- final AHNotification value = notificationArgumentCaptor.getValue();
137
- assertThat(value.getReadableText()).isEqualTo("Badge");
138
- assertThat(value.getBackgroundColor()).isEqualTo(Color.RED);
139
-
140
- verify(bottomTabs,never()).setNotification(notificationArgumentCaptor.capture(), eq(0));
141
- verify(bottomTabs,never()).setNotification(notificationArgumentCaptor.capture(), eq(2));
142
-
143
- }
144
-
145
- @Test
146
- public void mergeOptions_createTabsOnce() {
147
- Options options = new Options();
148
- options.bottomTabOptions.iconColor = new ThemeColour(new Colour(1));
149
- options.bottomTabOptions.selectedIconColor = new ThemeColour(new Colour(1));
150
- BottomTabPresenter spy = spy(uut);
151
-
152
- spy.mergeOptions(options);
153
-
154
- InOrder inOrder = inOrder(spy, child1, child2, child3, bottomTabs);
155
- inOrder.verify(bottomTabs).disableItemsCreation();
156
- forEach(tabs, tab -> inOrder.verify(spy).mergeChildOptions(options, tab));
157
- inOrder.verify(bottomTabs).enableItemsCreation();
158
- }
159
-
160
- @Test
161
- public void mergeChildOptions() {
162
- for (int i = 0; i < 2; i++) {
163
- Options options = tabs.get(i).options;
164
- uut.mergeChildOptions(options, tabs.get(i));
165
- verify(bottomTabs, times(1)).setNotification(any(AHNotification.class), eq(i));
166
- verify(bottomTabs, times(1)).setIconActiveColor(eq(i), anyInt());
167
- verify(bottomTabs, times(1)).setIconInactiveColor(eq(i), anyInt());
168
- }
169
- verifyNoMoreInteractions(bottomTabs);
170
- }
171
-
172
- @Test
173
- public void mergeChildOptions_onlySetsDefinedOptions() {
174
- uut.mergeChildOptions(child3.options, child3);
175
- verify(bottomTabs, times(0)).setNotification(any(AHNotification.class), anyInt());
176
- verify(bottomTabs, times(0)).setIconInactiveColor(eq(2), anyInt());
177
- verify(bottomTabs, times(0)).setIconActiveColor(eq(2), anyInt());
178
- verifyNoMoreInteractions(bottomTabs);
179
- }
180
-
181
- @Test
182
- public void mergeChildOptions_nullColorsAreNotMerged() {
183
- Options options = new Options();
184
- options.bottomTabOptions.iconColor = new ThemeColour(new DontApplyColour());
185
- options.bottomTabOptions.selectedIconColor = new ThemeColour(new DontApplyColour());
186
- uut.mergeChildOptions(options, child3);
187
- verify(bottomTabs, times(0)).setIconActiveColor(anyInt(), anyInt());
188
- verify(bottomTabs, times(0)).setIconInactiveColor(anyInt(), anyInt());
189
- }
190
-
191
- private Options createTab1Options() {
192
- Options options = new Options();
193
- options.bottomTabOptions.badge = new Text("tab1badge");
194
- options.bottomTabOptions.iconColor = new ThemeColour(new Colour(Color.RED));
195
- options.bottomTabOptions.selectedIconColor = new ThemeColour(new Colour(Color.RED));
196
- return options;
197
- }
198
-
199
- private Options createTab2Options() {
200
- Options options = new Options();
201
- options.bottomTabOptions.badge = new Text("tab2badge");
202
- options.bottomTabOptions.iconColor = new ThemeColour(new Colour(Color.RED));
203
- options.bottomTabOptions.selectedIconColor = new ThemeColour(new Colour(Color.RED));
204
- return options;
205
- }
206
- }
@@ -1,62 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.bottomtabs;
2
-
3
- import android.view.ViewGroup;
4
-
5
- import com.reactnativenavigation.BaseTest;
6
- import com.reactnativenavigation.options.Options;
7
- import com.reactnativenavigation.options.TabsAttachMode;
8
- import com.reactnativenavigation.viewcontrollers.bottomtabs.attacher.BottomTabsAttacher;
9
- import com.reactnativenavigation.viewcontrollers.bottomtabs.attacher.modes.AttachMode;
10
- import com.reactnativenavigation.viewcontrollers.bottomtabs.attacher.modes.OnSwitchToTab;
11
- import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
12
-
13
- import org.junit.Test;
14
- import org.mockito.Mockito;
15
-
16
- import java.util.Arrays;
17
- import java.util.List;
18
-
19
- import static org.assertj.core.api.Java6Assertions.assertThat;
20
- import static org.mockito.Mockito.mock;
21
- import static org.mockito.Mockito.verify;
22
-
23
- public class BottomTabsAttacherTest extends BaseTest {
24
-
25
- private BottomTabsAttacher uut;
26
- private AttachMode mode;
27
- private final Options defaultOptions = new Options();
28
-
29
- @Override
30
- public void beforeEach() {
31
- mode = Mockito.mock(AttachMode.class);
32
- List<ViewController<?>> tabs = Arrays.asList(mock(ViewController.class), mock(ViewController.class));
33
- uut = new BottomTabsAttacher(tabs, Mockito.mock(BottomTabsPresenter.class), defaultOptions);
34
- uut.attachStrategy = mode;
35
- }
36
-
37
- @Test
38
- public void init_defaultOptionsAreTakenIntoAccount() {
39
- defaultOptions.bottomTabsOptions.tabsAttachMode = TabsAttachMode.ON_SWITCH_TO_TAB;
40
- uut.init(Mockito.mock(ViewGroup.class), Options.EMPTY);
41
- assertThat(uut.attachStrategy).isInstanceOfAny(OnSwitchToTab.class);
42
- }
43
-
44
- @Test
45
- public void attach_delegatesToStrategy() {
46
- uut.attach();
47
- verify(mode).attach();
48
- }
49
-
50
- @Test
51
- public void onTabSelected() {
52
- ViewController<?> tab = mock(ViewController.class);
53
- uut.onTabSelected(tab);
54
- verify(mode).onTabSelected(tab);
55
- }
56
-
57
- @Test
58
- public void destroy_delegatesToStrategy() {
59
- uut.destroy();
60
- verify(mode).destroy();
61
- }
62
- }