react-native-navigation 7.24.3 → 7.25.0
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.
- package/lib/android/app/build.gradle +12 -9
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/Options.java +2 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/layout/LayoutInsets.kt +44 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/layout/LayoutOptions.kt +71 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/PrimitiveExt.kt +9 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +4 -3
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/navigator/Navigator.java +5 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/Presenter.java +23 -7
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java +12 -3
- package/lib/dist/src/interfaces/Options.d.ts +10 -0
- package/lib/ios/RNNBasePresenter.m +17 -0
- package/lib/ios/RNNBottomTabsController.m +1 -0
- package/lib/ios/RNNComponentViewController.m +5 -0
- package/lib/ios/RNNLayoutOptions.h +2 -1
- package/lib/ios/RNNLayoutOptions.m +4 -0
- package/lib/ios/RNNStackPresenter.m +1 -0
- package/lib/src/interfaces/Options.ts +12 -0
- package/package.json +3 -1
- package/.buildkite/pipeline.yml +0 -59
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutOptions.java +0 -48
- package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +0 -178
- package/lib/android/app/src/test/java/com/reactnativenavigation/EnvironmentTest.java +0 -43
- package/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java +0 -23
- package/lib/android/app/src/test/java/com/reactnativenavigation/TestApplication.java +0 -35
- package/lib/android/app/src/test/java/com/reactnativenavigation/TestUtils.java +0 -62
- package/lib/android/app/src/test/java/com/reactnativenavigation/fakes/IconResolverFake.kt +0 -8
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/BackDrawable.java +0 -30
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/ImageLoaderMock.kt +0 -49
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/Mocks.kt +0 -18
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleComponentViewController.java +0 -15
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleOverlay.java +0 -54
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleViewController.java +0 -113
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentLayout.java +0 -79
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentViewCreator.java +0 -18
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestReactView.java +0 -71
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarButtonCreatorMock.java +0 -34
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarReactViewCreatorMock.java +0 -20
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TopBarBackgroundViewCreatorMock.java +0 -20
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TypefaceLoaderMock.kt +0 -21
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/LayoutNodeParserTest.java +0 -51
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/OptionsTest.java +0 -315
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/OrientationOptionsTest.java +0 -81
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/TopBarButtonsTest.kt +0 -95
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/TransitionAnimationOptionsTest.kt +0 -122
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/BoolParserTest.java +0 -28
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/ColorParseTest.java +0 -50
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/JSONParserTest.java +0 -64
- package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/PresenterTest.java +0 -56
- package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/RenderCheckerTest.java +0 -59
- package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/SideMenuPresenterTest.java +0 -35
- package/lib/android/app/src/test/java/com/reactnativenavigation/react/NavigationModuleTest.java +0 -102
- package/lib/android/app/src/test/java/com/reactnativenavigation/react/ReloadListenerTest.java +0 -24
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/AnimationHelper.kt +0 -33
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonPresenterTest.java +0 -241
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonSpanTest.java +0 -57
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/CompatUtilsTest.java +0 -17
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/LayoutFactoryTest.java +0 -78
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/MotionEventTest.kt +0 -47
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/NativeCommandListenerTest.java +0 -60
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/OptionHelper.java +0 -16
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ReflectionUtilsTest.java +0 -26
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/StringUtilsTest.java +0 -19
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/SystemUiUtilsTest.kt +0 -27
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleAndButtonsMeasurerTest.kt +0 -357
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleBarHelper.java +0 -54
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiThreadTest.java +0 -29
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiUtilsTest.java +0 -22
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ViewHelper.java +0 -9
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/OptionsApplyingTest.java +0 -149
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenterTest.java +0 -206
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAttacherTest.java +0 -62
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt +0 -589
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsPresenterTest.kt +0 -173
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AfterInitialTabTest.java +0 -38
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachModeTest.java +0 -86
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/OnSwitchToTabTest.java +0 -31
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/TogetherTest.java +0 -20
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/button/NavigationIconResolverTest.java +0 -78
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +0 -80
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistryTest.java +0 -56
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewControllerTest.java +0 -216
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/ExternalComponentViewControllerTest.java +0 -97
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/FragmentCreatorMock.java +0 -34
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/SomeFragment.java +0 -8
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/fakes/FakeParentController.kt +0 -33
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorMock.java +0 -40
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorTest.kt +0 -213
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +0 -319
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +0 -367
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +0 -898
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +0 -254
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManagerTest.java +0 -108
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +0 -299
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +0 -446
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/BackButtonHelperTest.java +0 -77
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/FloatingActionButtonTest.java +0 -154
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/IdStackTest.java +0 -114
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +0 -241
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +0 -1165
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +0 -1081
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarButtonControllerTest.java +0 -61
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarReactViewControllerTest.java +0 -43
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarButtonControllerTest.java +0 -120
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +0 -432
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsViewControllerTest.java +0 -249
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerTest.java +0 -337
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegateTest.java +0 -68
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/OverlayTouchDelegateTest.java +0 -60
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/TitleAndButtonsContainerTest.kt +0 -477
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/TopBarTest.java +0 -82
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/BaseViewAnimatorTest.kt +0 -109
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/DefaultViewAnimatorCreatorFake.kt +0 -36
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainerTest.kt +0 -101
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsTest.kt +0 -40
- package/lib/android/app/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker +0 -1
|
@@ -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
|
-
}
|