react-native-navigation 7.24.3 → 7.25.1
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/RNNBridgeManager.mm +5 -3
- package/lib/ios/RNNComponentViewController.m +5 -0
- package/lib/ios/RNNLayoutOptions.h +2 -1
- package/lib/ios/RNNLayoutOptions.m +4 -0
- package/lib/ios/RNNModalHostViewManagerHandler.h +11 -0
- package/lib/ios/RNNModalHostViewManagerHandler.m +40 -0
- package/lib/ios/RNNModalManager.h +2 -2
- package/lib/ios/RNNModalManager.m +0 -26
- package/lib/ios/RNNStackPresenter.m +1 -0
- package/lib/ios/ReactNativeNavigation.xcodeproj/project.pbxproj +8 -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,315 +0,0 @@
|
|
|
1
|
-
package com.reactnativenavigation.options;
|
|
2
|
-
|
|
3
|
-
import android.app.Activity;
|
|
4
|
-
import android.graphics.Color;
|
|
5
|
-
import android.graphics.Typeface;
|
|
6
|
-
|
|
7
|
-
import com.reactnativenavigation.BaseTest;
|
|
8
|
-
import com.reactnativenavigation.options.params.Bool;
|
|
9
|
-
import com.reactnativenavigation.options.params.Colour;
|
|
10
|
-
import com.reactnativenavigation.options.params.NullText;
|
|
11
|
-
import com.reactnativenavigation.options.params.Number;
|
|
12
|
-
import com.reactnativenavigation.options.params.ThemeColour;
|
|
13
|
-
import com.reactnativenavigation.options.params.Text;
|
|
14
|
-
import com.reactnativenavigation.options.parsers.TypefaceLoader;
|
|
15
|
-
|
|
16
|
-
import org.json.JSONException;
|
|
17
|
-
import org.json.JSONObject;
|
|
18
|
-
import org.junit.Test;
|
|
19
|
-
import org.mockito.Mockito;
|
|
20
|
-
import org.mockito.stubbing.Answer;
|
|
21
|
-
|
|
22
|
-
import androidx.annotation.NonNull;
|
|
23
|
-
|
|
24
|
-
import static org.assertj.core.api.Java6Assertions.assertThat;
|
|
25
|
-
import static org.mockito.Mockito.when;
|
|
26
|
-
|
|
27
|
-
public class OptionsTest extends BaseTest {
|
|
28
|
-
|
|
29
|
-
private static final String TITLE = "the title";
|
|
30
|
-
private static final Number TITLE_HEIGHT = new Number(100);
|
|
31
|
-
private static final String FAB_ID = "FAB";
|
|
32
|
-
private static final String FAB_ALIGN_HORIZONTALLY = "right";
|
|
33
|
-
private static final String FAB_ALIGN_VERTICALLY = "bottom";
|
|
34
|
-
private static final int TOP_BAR_BACKGROUND_COLOR = 0xff123456;
|
|
35
|
-
private static final int FAB_BACKGROUND_COLOR = android.graphics.Color.BLUE;
|
|
36
|
-
private static final int FAB_CLICK_COLOR = android.graphics.Color.RED;
|
|
37
|
-
private static final int FAB_RIPPLE_COLOR = android.graphics.Color.GREEN;
|
|
38
|
-
private static final Boolean FAB_VISIBLE = true;
|
|
39
|
-
private static final Boolean FAB_HIDE_ON_SCROLL = true;
|
|
40
|
-
private static final int TOP_BAR_TEXT_COLOR = 0xff123456;
|
|
41
|
-
private static final int TOP_BAR_FONT_SIZE = 18;
|
|
42
|
-
private static final String TOP_BAR_FONT_FAMILY = "HelveticaNeue-CondensedBold";
|
|
43
|
-
private static final String BACK_BUTTON_ACCESSIBILITY_LABEL = "Go Back My Accessibility Label";
|
|
44
|
-
private static final int SUBTITLE_FONT_SIZE = 14;
|
|
45
|
-
private static final int SUBTITLE_TEXT_COLOR = 0xff123457;
|
|
46
|
-
private static final int SCREEN_BACKGROUND_COLOR = 0xff123458;
|
|
47
|
-
private static final String SUBTITLE_FONT_FAMILY = "HelveticaNeue-Condensed";
|
|
48
|
-
private static final Typeface SUBTITLE_TYPEFACE = Typeface.create("HelveticaNeue-Condensed", Typeface.NORMAL);
|
|
49
|
-
private static final String SUBTITLE_ALIGNMENT = "center";
|
|
50
|
-
private static final Typeface TOP_BAR_TYPEFACE = Typeface.create("HelveticaNeue-CondensedBold", Typeface.BOLD);
|
|
51
|
-
private static final Bool TOP_BAR_VISIBLE = new Bool(true);
|
|
52
|
-
private static final Bool TOP_BAR_DRAW_BEHIND = new Bool(true);
|
|
53
|
-
private static final Bool TOP_BAR_HIDE_ON_SCROLL = new Bool(true);
|
|
54
|
-
private static final Bool BOTTOM_TABS_ANIMATE = new Bool(true);
|
|
55
|
-
private static final Bool BOTTOM_TABS_VISIBLE = new Bool(true);
|
|
56
|
-
private static final String BOTTOM_TABS_BADGE = "3";
|
|
57
|
-
private static final String BOTTOM_TABS_CURRENT_TAB_ID = "ComponentId";
|
|
58
|
-
private static final Number BOTTOM_TABS_CURRENT_TAB_INDEX = new Number(1);
|
|
59
|
-
private TypefaceLoader mockLoader;
|
|
60
|
-
private Activity activity;
|
|
61
|
-
|
|
62
|
-
@Override
|
|
63
|
-
public void beforeEach() {
|
|
64
|
-
super.beforeEach();
|
|
65
|
-
activity = newActivity();
|
|
66
|
-
mockLoader = Mockito.mock(TypefaceLoader.class);
|
|
67
|
-
when(mockLoader.getTypeFace("HelveticaNeue-Condensed", null, null, null)).then((Answer<Typeface>) invocation -> SUBTITLE_TYPEFACE);
|
|
68
|
-
when(mockLoader.getTypeFace("HelveticaNeue-CondensedBold", null, null, null)).then((Answer<Typeface>) invocation -> TOP_BAR_TYPEFACE);
|
|
69
|
-
Mockito.doReturn(TOP_BAR_TYPEFACE).when(mockLoader).getTypeFace(TOP_BAR_FONT_FAMILY, "", "", null);
|
|
70
|
-
Mockito.doReturn(SUBTITLE_TYPEFACE).when(mockLoader).getTypeFace(SUBTITLE_FONT_FAMILY, "", "", null);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
@Test
|
|
74
|
-
public void parsesNullAsDefaultEmptyOptions() {
|
|
75
|
-
assertThat(Options.parse(null, mockLoader, null)).isNotNull();
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
@Test
|
|
79
|
-
public void parsesJson() throws Exception {
|
|
80
|
-
JSONObject layout = new JSONObject()
|
|
81
|
-
.put("backgroundColor", createColor(SCREEN_BACKGROUND_COLOR,SCREEN_BACKGROUND_COLOR));
|
|
82
|
-
JSONObject json = new JSONObject()
|
|
83
|
-
.put("topBar", createTopBar(TOP_BAR_VISIBLE.get()))
|
|
84
|
-
.put("fab", createFab())
|
|
85
|
-
.put("bottomTabs", createBottomTabs())
|
|
86
|
-
.put("layout", layout);
|
|
87
|
-
Options result = Options.parse(activity, mockLoader, json);
|
|
88
|
-
assertResult(result);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
private void assertResult(Options result) {
|
|
92
|
-
assertThat(result.topBar.title.text.get()).isEqualTo(TITLE);
|
|
93
|
-
assertThat(result.topBar.background.color.get()).isEqualTo(TOP_BAR_BACKGROUND_COLOR);
|
|
94
|
-
assertThat(result.topBar.title.height.get()).isEqualTo(TITLE_HEIGHT.get());
|
|
95
|
-
assertThat(result.topBar.title.color.get()).isEqualTo(TOP_BAR_TEXT_COLOR);
|
|
96
|
-
assertThat(result.topBar.title.fontSize.get()).isEqualTo(TOP_BAR_FONT_SIZE);
|
|
97
|
-
assertThat(result.topBar.title.font.getTypeface(mockLoader)).isEqualTo(TOP_BAR_TYPEFACE);
|
|
98
|
-
assertThat(result.topBar.subtitle.color.get()).isEqualTo(SUBTITLE_TEXT_COLOR);
|
|
99
|
-
assertThat(result.topBar.subtitle.fontSize.get()).isEqualTo(SUBTITLE_FONT_SIZE);
|
|
100
|
-
assertThat(result.topBar.subtitle.alignment).isEqualTo(Alignment.fromString(SUBTITLE_ALIGNMENT));
|
|
101
|
-
assertThat(result.topBar.subtitle.font.getTypeface(mockLoader)).isEqualTo(SUBTITLE_TYPEFACE);
|
|
102
|
-
assertThat(result.topBar.visible.get()).isEqualTo(TOP_BAR_VISIBLE.get());
|
|
103
|
-
assertThat(result.topBar.drawBehind.get()).isEqualTo(TOP_BAR_DRAW_BEHIND.get());
|
|
104
|
-
assertThat(result.topBar.hideOnScroll.get()).isEqualTo(TOP_BAR_HIDE_ON_SCROLL.get());
|
|
105
|
-
assertThat(result.topBar.buttons.back.accessibilityLabel.get()).isEqualTo(BACK_BUTTON_ACCESSIBILITY_LABEL);
|
|
106
|
-
assertThat(result.bottomTabsOptions.animate.get()).isEqualTo(BOTTOM_TABS_ANIMATE.get());
|
|
107
|
-
assertThat(result.bottomTabsOptions.visible.get()).isEqualTo(BOTTOM_TABS_VISIBLE.get());
|
|
108
|
-
assertThat(result.fabOptions.id.get()).isEqualTo(FAB_ID);
|
|
109
|
-
assertThat(result.fabOptions.backgroundColor.get()).isEqualTo(FAB_BACKGROUND_COLOR);
|
|
110
|
-
assertThat(result.fabOptions.clickColor.get()).isEqualTo(FAB_CLICK_COLOR);
|
|
111
|
-
assertThat(result.fabOptions.rippleColor.get()).isEqualTo(FAB_RIPPLE_COLOR);
|
|
112
|
-
assertThat(result.fabOptions.visible.get()).isEqualTo(FAB_VISIBLE);
|
|
113
|
-
assertThat(result.fabOptions.hideOnScroll.get()).isEqualTo(FAB_HIDE_ON_SCROLL);
|
|
114
|
-
assertThat(result.fabOptions.alignVertically.get()).isEqualTo(FAB_ALIGN_VERTICALLY);
|
|
115
|
-
assertThat(result.fabOptions.alignHorizontally.get()).isEqualTo(FAB_ALIGN_HORIZONTALLY);
|
|
116
|
-
assertThat(result.layout.backgroundColor.get()).isEqualTo(SCREEN_BACKGROUND_COLOR);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
@NonNull
|
|
120
|
-
private JSONObject createBottomTabs() throws JSONException {
|
|
121
|
-
return new JSONObject()
|
|
122
|
-
.put("currentTabId", BOTTOM_TABS_CURRENT_TAB_ID)
|
|
123
|
-
.put("currentTabIndex", BOTTOM_TABS_CURRENT_TAB_INDEX.get())
|
|
124
|
-
.put("visible", BOTTOM_TABS_VISIBLE.get())
|
|
125
|
-
.put("animate", BOTTOM_TABS_ANIMATE.get());
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
private JSONObject createBackButton() throws JSONException {
|
|
129
|
-
return new JSONObject()
|
|
130
|
-
.put("accessibilityLabel", BACK_BUTTON_ACCESSIBILITY_LABEL);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
@NonNull
|
|
134
|
-
private JSONObject createTopBar(boolean visible) throws JSONException {
|
|
135
|
-
return new JSONObject()
|
|
136
|
-
.put("title", createTitle())
|
|
137
|
-
.put("subtitle", createSubtitle())
|
|
138
|
-
.put("background", createBackground())
|
|
139
|
-
.put("visible", visible)
|
|
140
|
-
.put("drawBehind", TOP_BAR_DRAW_BEHIND.get())
|
|
141
|
-
.put("hideOnScroll", TOP_BAR_HIDE_ON_SCROLL.get())
|
|
142
|
-
.put("backButton", createBackButton());
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
private JSONObject createBackground() throws JSONException {
|
|
146
|
-
return new JSONObject()
|
|
147
|
-
.put("color", createColor(TOP_BAR_BACKGROUND_COLOR, TOP_BAR_BACKGROUND_COLOR));
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
private JSONObject createColor(int light, int dark) throws JSONException {
|
|
151
|
-
return new JSONObject().put("light", light).put("dark", dark);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
private JSONObject createTitle() throws JSONException {
|
|
155
|
-
return new JSONObject()
|
|
156
|
-
.put("text", "the title")
|
|
157
|
-
.put("height", TITLE_HEIGHT.get())
|
|
158
|
-
.put("color", createColor(TOP_BAR_TEXT_COLOR,TOP_BAR_TEXT_COLOR))
|
|
159
|
-
.put("fontSize", TOP_BAR_FONT_SIZE)
|
|
160
|
-
.put("fontFamily", TOP_BAR_FONT_FAMILY);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
private JSONObject createSubtitle() throws JSONException {
|
|
164
|
-
return new JSONObject()
|
|
165
|
-
.put("text", "the subtitle")
|
|
166
|
-
.put("color", createColor(SUBTITLE_TEXT_COLOR,SUBTITLE_TEXT_COLOR))
|
|
167
|
-
.put("fontSize", SUBTITLE_FONT_SIZE)
|
|
168
|
-
.put("fontFamily", SUBTITLE_FONT_FAMILY)
|
|
169
|
-
.put("alignment", SUBTITLE_ALIGNMENT);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
@NonNull
|
|
173
|
-
private JSONObject createFab() throws JSONException {
|
|
174
|
-
return new JSONObject()
|
|
175
|
-
.put("id", FAB_ID)
|
|
176
|
-
.put("backgroundColor", createColor(FAB_BACKGROUND_COLOR,FAB_BACKGROUND_COLOR))
|
|
177
|
-
.put("clickColor", createColor(FAB_CLICK_COLOR,FAB_CLICK_COLOR))
|
|
178
|
-
.put("rippleColor", createColor(FAB_RIPPLE_COLOR,FAB_RIPPLE_COLOR))
|
|
179
|
-
.put("alignHorizontally", FAB_ALIGN_HORIZONTALLY)
|
|
180
|
-
.put("alignVertically", FAB_ALIGN_VERTICALLY)
|
|
181
|
-
.put("hideOnScroll", FAB_HIDE_ON_SCROLL)
|
|
182
|
-
.put("visible", FAB_VISIBLE);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
@NonNull
|
|
186
|
-
private JSONObject createOtherFab() throws JSONException {
|
|
187
|
-
return new JSONObject()
|
|
188
|
-
.put("id", "FAB")
|
|
189
|
-
.put("backgroundColor", createColor(FAB_BACKGROUND_COLOR,FAB_BACKGROUND_COLOR))
|
|
190
|
-
.put("clickColor", createColor(FAB_CLICK_COLOR,FAB_CLICK_COLOR))
|
|
191
|
-
.put("rippleColor", createColor(FAB_RIPPLE_COLOR,FAB_RIPPLE_COLOR))
|
|
192
|
-
.put("alignHorizontally", FAB_ALIGN_HORIZONTALLY)
|
|
193
|
-
.put("alignVertically", FAB_ALIGN_VERTICALLY)
|
|
194
|
-
.put("hideOnScroll", FAB_HIDE_ON_SCROLL)
|
|
195
|
-
.put("visible", FAB_VISIBLE);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
@NonNull
|
|
199
|
-
private JSONObject createOtherTopBar() throws JSONException {
|
|
200
|
-
return new JSONObject()
|
|
201
|
-
.put("title", createTitle())
|
|
202
|
-
.put("subtitle", createSubtitle())
|
|
203
|
-
.put("background", createBackground())
|
|
204
|
-
.put("visible", TOP_BAR_VISIBLE);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
@NonNull
|
|
208
|
-
private JSONObject createOtherBottomTabs() throws JSONException {
|
|
209
|
-
return new JSONObject()
|
|
210
|
-
.put("currentTabId", BOTTOM_TABS_CURRENT_TAB_ID)
|
|
211
|
-
.put("currentTabIndex", BOTTOM_TABS_CURRENT_TAB_INDEX)
|
|
212
|
-
.put("visible", BOTTOM_TABS_VISIBLE)
|
|
213
|
-
.put("animate", BOTTOM_TABS_ANIMATE.get())
|
|
214
|
-
.put("tabBadge", BOTTOM_TABS_BADGE);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
@Test
|
|
218
|
-
public void mergeDoesNotMutate() throws Exception {
|
|
219
|
-
JSONObject json1 = new JSONObject();
|
|
220
|
-
json1.put("topBar", createTopBar(true));
|
|
221
|
-
Options options1 = Options.parse(activity, mockLoader, json1);
|
|
222
|
-
options1.topBar.title.text = new Text("some title");
|
|
223
|
-
|
|
224
|
-
JSONObject json2 = new JSONObject();
|
|
225
|
-
json2.put("topBar", createTopBar(false));
|
|
226
|
-
Options options2 = Options.parse(activity, mockLoader, json2);
|
|
227
|
-
options2.topBar.title.text = new NullText();
|
|
228
|
-
|
|
229
|
-
Options merged = options1.mergeWith(options2);
|
|
230
|
-
assertThat(options1.topBar.visible.get()).isTrue();
|
|
231
|
-
assertThat(merged.topBar.visible.get()).isFalse();
|
|
232
|
-
assertThat(merged.topBar.title.text.get()).isEqualTo("some title");
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
@Test
|
|
236
|
-
public void mergeDefaultOptions() throws Exception {
|
|
237
|
-
JSONObject layout = new JSONObject()
|
|
238
|
-
.put("backgroundColor", createColor(SCREEN_BACKGROUND_COLOR,SCREEN_BACKGROUND_COLOR));
|
|
239
|
-
JSONObject json = new JSONObject()
|
|
240
|
-
.put("topBar", createTopBar(TOP_BAR_VISIBLE.get()))
|
|
241
|
-
.put("fab", createFab())
|
|
242
|
-
.put("bottomTabs", createBottomTabs())
|
|
243
|
-
.put("layout", layout);
|
|
244
|
-
Options defaultOptions = Options.parse(activity, mockLoader, json);
|
|
245
|
-
Options options = new Options();
|
|
246
|
-
|
|
247
|
-
assertResult(options.mergeWith(defaultOptions));
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
@Test
|
|
251
|
-
public void mergedDefaultOptionsDontOverrideGivenOptions() throws Exception {
|
|
252
|
-
JSONObject layout = new JSONObject()
|
|
253
|
-
.put("backgroundColor", createColor(SCREEN_BACKGROUND_COLOR,SCREEN_BACKGROUND_COLOR));
|
|
254
|
-
JSONObject defaultJson = new JSONObject()
|
|
255
|
-
.put("topBar", createOtherTopBar())
|
|
256
|
-
.put("fab", createOtherFab())
|
|
257
|
-
.put("bottomTabs", createOtherBottomTabs())
|
|
258
|
-
.put("layout", layout);
|
|
259
|
-
Options defaultOptions = Options.parse(activity, mockLoader, defaultJson);
|
|
260
|
-
|
|
261
|
-
JSONObject json = new JSONObject()
|
|
262
|
-
.put("topBar", createTopBar(TOP_BAR_VISIBLE.get()))
|
|
263
|
-
.put("bottomTabs", createBottomTabs());
|
|
264
|
-
Options options = Options.parse(activity, mockLoader, json);
|
|
265
|
-
options.withDefaultOptions(defaultOptions);
|
|
266
|
-
assertResult(options);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
@Test
|
|
270
|
-
public void defaultEmptyOptions() {
|
|
271
|
-
Options uut = new Options();
|
|
272
|
-
assertThat(uut.topBar.title.text.get("")).isEmpty();
|
|
273
|
-
assertThat(uut.layout.backgroundColor.hasValue()).isFalse();
|
|
274
|
-
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
@Test
|
|
278
|
-
public void topBar_defaultOptions() {
|
|
279
|
-
Options uut = new Options();
|
|
280
|
-
assertThat(uut.topBar.visible.isFalseOrUndefined()).isTrue();
|
|
281
|
-
assertThat(uut.topBar.animate.isTrueOrUndefined()).isTrue();
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
@Test
|
|
285
|
-
public void clear_topBarOptions() {
|
|
286
|
-
Options uut = new Options();
|
|
287
|
-
uut.topBar.title.text = new Text("some title");
|
|
288
|
-
uut.clearTopBarOptions();
|
|
289
|
-
assertThat(uut.topBar.title.text.hasValue()).isFalse();
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
@Test
|
|
293
|
-
public void clear_bottomTabsOptions() {
|
|
294
|
-
Options uut = new Options();
|
|
295
|
-
uut.bottomTabsOptions.backgroundColor = new ThemeColour(new Colour(Color.RED), new Colour(Color.RED));
|
|
296
|
-
uut.clearBottomTabsOptions();
|
|
297
|
-
assertThat(uut.bottomTabsOptions.backgroundColor.hasValue()).isFalse();
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
@Test
|
|
301
|
-
public void clear_topTabsOptions() {
|
|
302
|
-
Options uut = new Options();
|
|
303
|
-
uut.topTabs.fontSize = new Number(666);
|
|
304
|
-
uut.clearTopTabsOptions();
|
|
305
|
-
assertThat(uut.topTabs.fontSize.hasValue()).isFalse();
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
@Test
|
|
309
|
-
public void clear_topTabOptions() {
|
|
310
|
-
Options uut = new Options();
|
|
311
|
-
uut.topTabOptions.title = new Text("some title");
|
|
312
|
-
uut.clearTopTabOptions();
|
|
313
|
-
assertThat(uut.topTabOptions.title.hasValue()).isFalse();
|
|
314
|
-
}
|
|
315
|
-
}
|
package/lib/android/app/src/test/java/com/reactnativenavigation/options/OrientationOptionsTest.java
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
package com.reactnativenavigation.options;
|
|
2
|
-
|
|
3
|
-
import com.reactnativenavigation.BaseTest;
|
|
4
|
-
|
|
5
|
-
import org.json.JSONArray;
|
|
6
|
-
import org.json.JSONException;
|
|
7
|
-
import org.json.JSONObject;
|
|
8
|
-
import org.junit.Test;
|
|
9
|
-
|
|
10
|
-
import java.util.Arrays;
|
|
11
|
-
|
|
12
|
-
import static org.assertj.core.api.Java6Assertions.assertThat;
|
|
13
|
-
|
|
14
|
-
public class OrientationOptionsTest extends BaseTest {
|
|
15
|
-
|
|
16
|
-
@Override
|
|
17
|
-
public void beforeEach() {
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
@Test
|
|
22
|
-
public void parse() {
|
|
23
|
-
OrientationOptions options = OrientationOptions.parse(create("default"));
|
|
24
|
-
assertThat(options.orientations).hasSize(1);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
@Test
|
|
28
|
-
public void parseOrientations() {
|
|
29
|
-
OrientationOptions options = OrientationOptions.parse(create("default", "landscape", "portrait"));
|
|
30
|
-
assertThat(options.orientations.get(0)).isEqualTo(Orientation.Default);
|
|
31
|
-
assertThat(options.orientations.get(1)).isEqualTo(Orientation.Landscape);
|
|
32
|
-
assertThat(options.orientations.get(2)).isEqualTo(Orientation.Portrait);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
@Test
|
|
36
|
-
public void parseSingleOrientation() {
|
|
37
|
-
OrientationOptions options = OrientationOptions.parse(create("landscape"));
|
|
38
|
-
assertThat(options.orientations.get(0)).isEqualTo(Orientation.Landscape);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
@Test
|
|
42
|
-
public void landscapePortrait_regardedAsUserOrientation() {
|
|
43
|
-
OrientationOptions options = OrientationOptions.parse(create("landscape", "portrait"));
|
|
44
|
-
assertThat(options.getValue()).isEqualTo(Orientation.PortraitLandscape.orientationCode);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
@Test
|
|
48
|
-
public void portraitLandscape_regardedAsUserOrientation() {
|
|
49
|
-
OrientationOptions options = OrientationOptions.parse(create("portrait", "landscape"));
|
|
50
|
-
assertThat(options.getValue()).isEqualTo(Orientation.PortraitLandscape.orientationCode);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
@Test
|
|
54
|
-
public void unsupportedOrientationsAreIgnored() {
|
|
55
|
-
OrientationOptions options = OrientationOptions.parse(create("default", "autoRotate"));
|
|
56
|
-
assertThat(options.orientations).hasSize(1);
|
|
57
|
-
assertThat(options.orientations.get(0)).isEqualTo(Orientation.Default);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
@Test
|
|
61
|
-
public void getValue_returnsDefaultIfUndefined() {
|
|
62
|
-
OrientationOptions options = new OrientationOptions();
|
|
63
|
-
assertThat(options.getValue()).isEqualTo(Orientation.Default.orientationCode);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
@Test
|
|
67
|
-
public void hasValue_returnsFalseForOrientationDefault() {
|
|
68
|
-
OrientationOptions options = OrientationOptions.parse(create("default"));
|
|
69
|
-
assertThat(options.hasValue()).isFalse();
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
private JSONObject create(String... orientations) {
|
|
73
|
-
JSONObject orientation = new JSONObject();
|
|
74
|
-
try {
|
|
75
|
-
orientation.putOpt("orientation", orientations.length > 1 ? new JSONArray(Arrays.asList(orientations)) : orientations[0]);
|
|
76
|
-
} catch (JSONException e) {
|
|
77
|
-
throw new RuntimeException("Unable to create orientation object");
|
|
78
|
-
}
|
|
79
|
-
return orientation;
|
|
80
|
-
}
|
|
81
|
-
}
|
package/lib/android/app/src/test/java/com/reactnativenavigation/options/TopBarButtonsTest.kt
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
package com.reactnativenavigation.options
|
|
2
|
-
|
|
3
|
-
import android.app.Activity
|
|
4
|
-
import com.reactnativenavigation.BaseTest
|
|
5
|
-
import org.assertj.core.api.Java6Assertions
|
|
6
|
-
import org.assertj.core.api.Java6Assertions.assertThat
|
|
7
|
-
import org.json.JSONObject
|
|
8
|
-
import org.junit.Test
|
|
9
|
-
import java.lang.Exception
|
|
10
|
-
import kotlin.test.assertTrue
|
|
11
|
-
|
|
12
|
-
class TopBarButtonsTest : BaseTest() {
|
|
13
|
-
private final var ACCESSIBILITY_LABEL_AS_DEFAUL_OPTIONS: String = "accessibilityLabel as default option"
|
|
14
|
-
private final var ACCESSIBILITY_LABEL_AS_CUSTOM_OPTIONS: String = "My accessibilityLabel explicitly given"
|
|
15
|
-
private final var OTHER_ACCESSIBILITY_LABEL: String = "Other accessibilityLabel"
|
|
16
|
-
private lateinit var uut: TopBarButtons
|
|
17
|
-
private var activity: Activity? = null
|
|
18
|
-
|
|
19
|
-
override fun beforeEach() {
|
|
20
|
-
uut = TopBarButtons()
|
|
21
|
-
activity = newActivity()
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
fun createBackButtonJson(label: String?): JSONObject {
|
|
25
|
-
return JSONObject().put("accessibilityLabel", label);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
fun createTopBarOptionsJson(label: String?): JSONObject {
|
|
29
|
-
return JSONObject().put("backButton", createBackButtonJson(label))
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
@Test
|
|
33
|
-
fun mergeWith_rightButtonsAreCopiedByValue() {
|
|
34
|
-
val right = arrayListOf(ButtonOptions(), ButtonOptions())
|
|
35
|
-
val other = TopBarButtons(right)
|
|
36
|
-
|
|
37
|
-
uut.mergeWith(other)
|
|
38
|
-
assertThat(uut.right).hasSize(2)
|
|
39
|
-
right.forEachIndexed { index, buttonOptions -> assertThat(buttonOptions).isNotEqualTo(uut.right!![index]) }
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
@Test
|
|
43
|
-
fun mergeWithDefault_dontOverrideCustomAccessibilityLabel() {
|
|
44
|
-
val default: TopBarButtons = TopBarButtons.parse(activity, createTopBarOptionsJson(ACCESSIBILITY_LABEL_AS_DEFAUL_OPTIONS))
|
|
45
|
-
val current: TopBarButtons = TopBarButtons.parse(activity, createTopBarOptionsJson(ACCESSIBILITY_LABEL_AS_CUSTOM_OPTIONS))
|
|
46
|
-
|
|
47
|
-
current.mergeWithDefault(default)
|
|
48
|
-
assertThat(current.back.accessibilityLabel.get()).isEqualTo(ACCESSIBILITY_LABEL_AS_CUSTOM_OPTIONS)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
@Test
|
|
52
|
-
fun mergeWithDefault_overrideDefaultAccessibilityLabel() {
|
|
53
|
-
val default: TopBarButtons = TopBarButtons.parse(activity, createTopBarOptionsJson(ACCESSIBILITY_LABEL_AS_DEFAUL_OPTIONS))
|
|
54
|
-
val current: TopBarButtons = TopBarButtons.parse(activity, createTopBarOptionsJson(BackButton.DEFAULT_ACCESSIBILITY_LABEL))
|
|
55
|
-
|
|
56
|
-
current.mergeWithDefault(default)
|
|
57
|
-
assertThat(current.back.accessibilityLabel.get()).isEqualTo(ACCESSIBILITY_LABEL_AS_DEFAUL_OPTIONS)
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
@Test
|
|
61
|
-
fun mergeWithDefault_overrideEmptyAccessibilityLabel() {
|
|
62
|
-
val default: TopBarButtons = TopBarButtons.parse(activity, createTopBarOptionsJson(ACCESSIBILITY_LABEL_AS_DEFAUL_OPTIONS))
|
|
63
|
-
val current: TopBarButtons = TopBarButtons.parse(activity, createTopBarOptionsJson(null))
|
|
64
|
-
|
|
65
|
-
current.mergeWithDefault(default)
|
|
66
|
-
assertThat(current.back.accessibilityLabel.get()).isEqualTo(ACCESSIBILITY_LABEL_AS_DEFAUL_OPTIONS)
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
@Test
|
|
70
|
-
fun mergeWith_dontOverrideCurrentAccessibilityLabelWhenPassEmptyValue() {
|
|
71
|
-
val current: TopBarButtons = TopBarButtons.parse(activity, createTopBarOptionsJson(ACCESSIBILITY_LABEL_AS_CUSTOM_OPTIONS))
|
|
72
|
-
val other: TopBarButtons = TopBarButtons.parse(activity, createTopBarOptionsJson(null))
|
|
73
|
-
|
|
74
|
-
current.mergeWith(other)
|
|
75
|
-
assertThat(current.back.accessibilityLabel.get()).isEqualTo(ACCESSIBILITY_LABEL_AS_CUSTOM_OPTIONS)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
@Test
|
|
79
|
-
fun mergeWith_dontOverrideCurrentAccessibilityLabelWhenPassDefaultValue() {
|
|
80
|
-
val current: TopBarButtons = TopBarButtons.parse(activity, createTopBarOptionsJson(ACCESSIBILITY_LABEL_AS_CUSTOM_OPTIONS))
|
|
81
|
-
val other: TopBarButtons = TopBarButtons.parse(activity, createTopBarOptionsJson(BackButton.DEFAULT_ACCESSIBILITY_LABEL))
|
|
82
|
-
|
|
83
|
-
current.mergeWith(other)
|
|
84
|
-
assertThat(current.back.accessibilityLabel.get()).isEqualTo(ACCESSIBILITY_LABEL_AS_CUSTOM_OPTIONS)
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
@Test
|
|
88
|
-
fun mergeWith_overridePreviousAccessibilityLabelWithNewValue() {
|
|
89
|
-
val current: TopBarButtons = TopBarButtons.parse(activity, createTopBarOptionsJson(ACCESSIBILITY_LABEL_AS_CUSTOM_OPTIONS))
|
|
90
|
-
val other: TopBarButtons = TopBarButtons.parse(activity, createTopBarOptionsJson(OTHER_ACCESSIBILITY_LABEL))
|
|
91
|
-
|
|
92
|
-
current.mergeWith(other)
|
|
93
|
-
assertThat(current.back.accessibilityLabel.get()).isEqualTo(OTHER_ACCESSIBILITY_LABEL)
|
|
94
|
-
}
|
|
95
|
-
}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
package com.reactnativenavigation.options
|
|
2
|
-
import org.mockito.kotlin.mock
|
|
3
|
-
import org.mockito.kotlin.whenever
|
|
4
|
-
import com.reactnativenavigation.BaseTest
|
|
5
|
-
import org.assertj.core.api.Assertions.assertThat
|
|
6
|
-
import org.json.JSONArray
|
|
7
|
-
import org.json.JSONObject
|
|
8
|
-
import org.junit.Test
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class TransitionAnimationOptionsTest : BaseTest() {
|
|
12
|
-
lateinit var uut: TransitionAnimationOptions
|
|
13
|
-
|
|
14
|
-
@Test
|
|
15
|
-
fun `parse - empty for invalid payload`() {
|
|
16
|
-
uut = parseTransitionAnimationOptions(JSONObject())
|
|
17
|
-
assertThat(uut.hasValue()).isFalse()
|
|
18
|
-
assertThat(uut.enter.hasValue()).isFalse()
|
|
19
|
-
assertThat(uut.exit.hasValue()).isFalse()
|
|
20
|
-
|
|
21
|
-
uut = parseTransitionAnimationOptions(JSONObject().apply { put("some", "value") })
|
|
22
|
-
assertThat(uut.hasValue()).isFalse()
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
@Test
|
|
26
|
-
fun `parse - should parse enabled animation options from valid payload`() {
|
|
27
|
-
uut = parseTransitionAnimationOptions(newModalAnimationJson(true))
|
|
28
|
-
assertThat(uut.hasValue()).isTrue()
|
|
29
|
-
assertThat(uut.enter.hasValue()).isTrue()
|
|
30
|
-
assertThat(uut.exit.hasValue()).isTrue()
|
|
31
|
-
assertThat(uut.exit.enabled.isTrueOrUndefined).isTrue()
|
|
32
|
-
assertThat(uut.enter.enabled.isTrueOrUndefined).isTrue()
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
@Test
|
|
36
|
-
fun `parse - should parse disabled animation options from valid payload`() {
|
|
37
|
-
uut = parseTransitionAnimationOptions(newModalAnimationJson(false))
|
|
38
|
-
assertThat(uut.hasValue()).isTrue()
|
|
39
|
-
assertThat(uut.enter.hasValue()).isTrue()
|
|
40
|
-
assertThat(uut.exit.hasValue()).isTrue()
|
|
41
|
-
assertThat(uut.exit.enabled.isTrueOrUndefined).isFalse()
|
|
42
|
-
assertThat(uut.enter.enabled.isTrueOrUndefined).isFalse()
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
@Test
|
|
46
|
-
fun `hasValue should return true if one of enter, exit, sharedElements, elementTransitions has value `() {
|
|
47
|
-
uut = TransitionAnimationOptions()
|
|
48
|
-
assertThat(uut.hasValue()).isFalse()
|
|
49
|
-
|
|
50
|
-
uut = TransitionAnimationOptions(enter = AnimationOptions(newAnimationOptionsJson(false)))
|
|
51
|
-
assertThat(uut.hasValue()).isTrue()
|
|
52
|
-
|
|
53
|
-
uut = TransitionAnimationOptions(exit = AnimationOptions(newAnimationOptionsJson(false)))
|
|
54
|
-
assertThat(uut.hasValue()).isTrue()
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
val mockSharedElements: SharedElements = mock { }
|
|
58
|
-
whenever(mockSharedElements.hasValue()).thenReturn(true)
|
|
59
|
-
uut = TransitionAnimationOptions(sharedElements = mockSharedElements)
|
|
60
|
-
assertThat(uut.hasValue()).isTrue()
|
|
61
|
-
|
|
62
|
-
val mockElementsTransitions: ElementTransitions = mock { }
|
|
63
|
-
whenever(mockElementsTransitions.hasValue()).thenReturn(true)
|
|
64
|
-
uut = TransitionAnimationOptions(elementTransitions = mockElementsTransitions)
|
|
65
|
-
assertThat(uut.hasValue()).isTrue()
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
@Test
|
|
71
|
-
fun `hasElementTransition should return true if one of shared elements, element Transitions has value`() {
|
|
72
|
-
uut = TransitionAnimationOptions()
|
|
73
|
-
assertThat(uut.hasElementTransitions()).isFalse()
|
|
74
|
-
|
|
75
|
-
val mockSharedElements: SharedElements = mock { }
|
|
76
|
-
whenever(mockSharedElements.hasValue()).thenReturn(true)
|
|
77
|
-
uut = TransitionAnimationOptions(sharedElements = mockSharedElements)
|
|
78
|
-
assertThat(uut.hasElementTransitions()).isTrue()
|
|
79
|
-
|
|
80
|
-
val mockElementsTransitions: ElementTransitions = mock { }
|
|
81
|
-
whenever(mockElementsTransitions.hasValue()).thenReturn(true)
|
|
82
|
-
uut = TransitionAnimationOptions(elementTransitions = mockElementsTransitions)
|
|
83
|
-
assertThat(uut.hasElementTransitions()).isTrue()
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
fun newSharedElementAnimationOptionsJson() =
|
|
90
|
-
JSONArray().apply {
|
|
91
|
-
put(JSONObject().apply {
|
|
92
|
-
put("fromId", "1")
|
|
93
|
-
put("toId", "2")
|
|
94
|
-
put("duration", "30")
|
|
95
|
-
})
|
|
96
|
-
put(JSONObject().apply {
|
|
97
|
-
put("fromId", "3")
|
|
98
|
-
put("toId", "4")
|
|
99
|
-
put("duration", "30")
|
|
100
|
-
})
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
fun newAnimationOptionsJson(enabled: Boolean) =
|
|
104
|
-
JSONObject().apply {
|
|
105
|
-
put("enabled", enabled)
|
|
106
|
-
put("translationY", newBasicValueAnimationJson())
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
fun newBasicValueAnimationJson() =
|
|
110
|
-
JSONObject().apply {
|
|
111
|
-
put("from", 0.0)
|
|
112
|
-
put("to", 1.0)
|
|
113
|
-
put("duration", 100)
|
|
114
|
-
put("interpolation", JSONObject().apply { put("type", "decelerate") })
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
fun newModalAnimationJson(enabled: Boolean = true) =
|
|
119
|
-
JSONObject().apply {
|
|
120
|
-
put("enter", newAnimationOptionsJson(enabled))
|
|
121
|
-
put("exit", newAnimationOptionsJson(enabled))
|
|
122
|
-
}
|
package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/BoolParserTest.java
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
package com.reactnativenavigation.options.parsers;
|
|
2
|
-
|
|
3
|
-
import com.reactnativenavigation.BaseTest;
|
|
4
|
-
|
|
5
|
-
import org.json.JSONException;
|
|
6
|
-
import org.json.JSONObject;
|
|
7
|
-
import org.junit.Test;
|
|
8
|
-
|
|
9
|
-
import static org.assertj.core.api.Java6Assertions.assertThat;
|
|
10
|
-
|
|
11
|
-
public class BoolParserTest extends BaseTest {
|
|
12
|
-
|
|
13
|
-
@Test
|
|
14
|
-
public void parse() throws JSONException {
|
|
15
|
-
JSONObject json = new JSONObject();
|
|
16
|
-
json.put("value", true);
|
|
17
|
-
assertThat(BoolParser.parse(json, "value").get()).isTrue();
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
@Test
|
|
21
|
-
public void parseFirst() throws JSONException {
|
|
22
|
-
JSONObject json = new JSONObject();
|
|
23
|
-
json.put("value1", true);
|
|
24
|
-
json.put("value2", false);
|
|
25
|
-
assertThat(BoolParser.parseFirst(json, "value1", "value2").get()).isTrue();
|
|
26
|
-
assertThat(BoolParser.parseFirst(json, "value2", "value1").get()).isFalse();
|
|
27
|
-
}
|
|
28
|
-
}
|