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.
Files changed (115) hide show
  1. package/lib/android/app/build.gradle +12 -9
  2. package/lib/android/app/src/main/java/com/reactnativenavigation/options/Options.java +2 -0
  3. package/lib/android/app/src/main/java/com/reactnativenavigation/options/layout/LayoutInsets.kt +44 -0
  4. package/lib/android/app/src/main/java/com/reactnativenavigation/options/layout/LayoutOptions.kt +71 -0
  5. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/PrimitiveExt.kt +9 -0
  6. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +4 -3
  7. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/navigator/Navigator.java +5 -0
  8. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/Presenter.java +23 -7
  9. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java +12 -3
  10. package/lib/dist/src/interfaces/Options.d.ts +10 -0
  11. package/lib/ios/RNNBasePresenter.m +17 -0
  12. package/lib/ios/RNNBottomTabsController.m +1 -0
  13. package/lib/ios/RNNComponentViewController.m +5 -0
  14. package/lib/ios/RNNLayoutOptions.h +2 -1
  15. package/lib/ios/RNNLayoutOptions.m +4 -0
  16. package/lib/ios/RNNStackPresenter.m +1 -0
  17. package/lib/src/interfaces/Options.ts +12 -0
  18. package/package.json +3 -1
  19. package/.buildkite/pipeline.yml +0 -59
  20. package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutOptions.java +0 -48
  21. package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +0 -178
  22. package/lib/android/app/src/test/java/com/reactnativenavigation/EnvironmentTest.java +0 -43
  23. package/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java +0 -23
  24. package/lib/android/app/src/test/java/com/reactnativenavigation/TestApplication.java +0 -35
  25. package/lib/android/app/src/test/java/com/reactnativenavigation/TestUtils.java +0 -62
  26. package/lib/android/app/src/test/java/com/reactnativenavigation/fakes/IconResolverFake.kt +0 -8
  27. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/BackDrawable.java +0 -30
  28. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/ImageLoaderMock.kt +0 -49
  29. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/Mocks.kt +0 -18
  30. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleComponentViewController.java +0 -15
  31. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleOverlay.java +0 -54
  32. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleViewController.java +0 -113
  33. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentLayout.java +0 -79
  34. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentViewCreator.java +0 -18
  35. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestReactView.java +0 -71
  36. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarButtonCreatorMock.java +0 -34
  37. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarReactViewCreatorMock.java +0 -20
  38. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TopBarBackgroundViewCreatorMock.java +0 -20
  39. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TypefaceLoaderMock.kt +0 -21
  40. package/lib/android/app/src/test/java/com/reactnativenavigation/options/LayoutNodeParserTest.java +0 -51
  41. package/lib/android/app/src/test/java/com/reactnativenavigation/options/OptionsTest.java +0 -315
  42. package/lib/android/app/src/test/java/com/reactnativenavigation/options/OrientationOptionsTest.java +0 -81
  43. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TopBarButtonsTest.kt +0 -95
  44. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TransitionAnimationOptionsTest.kt +0 -122
  45. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/BoolParserTest.java +0 -28
  46. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/ColorParseTest.java +0 -50
  47. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/JSONParserTest.java +0 -64
  48. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/PresenterTest.java +0 -56
  49. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/RenderCheckerTest.java +0 -59
  50. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/SideMenuPresenterTest.java +0 -35
  51. package/lib/android/app/src/test/java/com/reactnativenavigation/react/NavigationModuleTest.java +0 -102
  52. package/lib/android/app/src/test/java/com/reactnativenavigation/react/ReloadListenerTest.java +0 -24
  53. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/AnimationHelper.kt +0 -33
  54. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonPresenterTest.java +0 -241
  55. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonSpanTest.java +0 -57
  56. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/CompatUtilsTest.java +0 -17
  57. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/LayoutFactoryTest.java +0 -78
  58. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/MotionEventTest.kt +0 -47
  59. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/NativeCommandListenerTest.java +0 -60
  60. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/OptionHelper.java +0 -16
  61. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ReflectionUtilsTest.java +0 -26
  62. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/StringUtilsTest.java +0 -19
  63. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/SystemUiUtilsTest.kt +0 -27
  64. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleAndButtonsMeasurerTest.kt +0 -357
  65. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleBarHelper.java +0 -54
  66. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiThreadTest.java +0 -29
  67. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiUtilsTest.java +0 -22
  68. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ViewHelper.java +0 -9
  69. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/OptionsApplyingTest.java +0 -149
  70. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenterTest.java +0 -206
  71. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAttacherTest.java +0 -62
  72. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt +0 -589
  73. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsPresenterTest.kt +0 -173
  74. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AfterInitialTabTest.java +0 -38
  75. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachModeTest.java +0 -86
  76. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/OnSwitchToTabTest.java +0 -31
  77. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/TogetherTest.java +0 -20
  78. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/button/NavigationIconResolverTest.java +0 -78
  79. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +0 -80
  80. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistryTest.java +0 -56
  81. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewControllerTest.java +0 -216
  82. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/ExternalComponentViewControllerTest.java +0 -97
  83. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/FragmentCreatorMock.java +0 -34
  84. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/SomeFragment.java +0 -8
  85. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/fakes/FakeParentController.kt +0 -33
  86. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorMock.java +0 -40
  87. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorTest.kt +0 -213
  88. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +0 -319
  89. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +0 -367
  90. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +0 -898
  91. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +0 -254
  92. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManagerTest.java +0 -108
  93. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +0 -299
  94. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +0 -446
  95. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/BackButtonHelperTest.java +0 -77
  96. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/FloatingActionButtonTest.java +0 -154
  97. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/IdStackTest.java +0 -114
  98. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +0 -241
  99. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +0 -1165
  100. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +0 -1081
  101. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarButtonControllerTest.java +0 -61
  102. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarReactViewControllerTest.java +0 -43
  103. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarButtonControllerTest.java +0 -120
  104. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +0 -432
  105. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsViewControllerTest.java +0 -249
  106. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerTest.java +0 -337
  107. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegateTest.java +0 -68
  108. package/lib/android/app/src/test/java/com/reactnativenavigation/views/OverlayTouchDelegateTest.java +0 -60
  109. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TitleAndButtonsContainerTest.kt +0 -477
  110. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TopBarTest.java +0 -82
  111. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/BaseViewAnimatorTest.kt +0 -109
  112. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/DefaultViewAnimatorCreatorFake.kt +0 -36
  113. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainerTest.kt +0 -101
  114. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsTest.kt +0 -40
  115. package/lib/android/app/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker +0 -1
@@ -1,79 +0,0 @@
1
- package com.reactnativenavigation.mocks;
2
-
3
- import android.content.Context;
4
- import android.view.MotionEvent;
5
- import android.view.ViewGroup;
6
-
7
- import androidx.annotation.NonNull;
8
-
9
- import com.reactnativenavigation.options.ButtonOptions;
10
- import com.reactnativenavigation.viewcontrollers.viewcontroller.ScrollEventListener;
11
- import com.reactnativenavigation.options.Options;
12
- import com.reactnativenavigation.react.ReactView;
13
- import com.reactnativenavigation.react.events.ComponentType;
14
- import com.reactnativenavigation.viewcontrollers.stack.topbar.button.ButtonController;
15
- import com.reactnativenavigation.views.component.ComponentLayout;
16
-
17
- public class TestComponentLayout extends ComponentLayout implements ButtonController.OnClickListener {
18
-
19
- private ReactView reactView;
20
-
21
- public TestComponentLayout(final Context context, ReactView reactView) {
22
- super(context, reactView);
23
- this.reactView = reactView;
24
- }
25
-
26
- @Override
27
- public boolean isReady() {
28
- return false;
29
- }
30
-
31
- @Override
32
- public ViewGroup asView() {
33
- return this;
34
- }
35
-
36
- @Override
37
- public void destroy() {
38
- }
39
-
40
- @Override
41
- public void sendComponentWillStart() {
42
- reactView.sendComponentStart(ComponentType.Component);
43
- }
44
-
45
- @Override
46
- public void sendComponentStart() {
47
- reactView.sendComponentStart(ComponentType.Component);
48
- }
49
-
50
- @Override
51
- public void sendComponentStop() {
52
- reactView.sendComponentStop(ComponentType.Component);
53
- }
54
-
55
- @Override
56
- public void applyOptions(Options options) {
57
-
58
- }
59
-
60
- @Override
61
- public void sendOnNavigationButtonPressed(String id) {
62
-
63
- }
64
-
65
- @Override
66
- public ScrollEventListener getScrollEventListener() {
67
- return null;
68
- }
69
-
70
- @Override
71
- public void dispatchTouchEventToJs(MotionEvent event) {
72
-
73
- }
74
-
75
- @Override
76
- public void onPress(@NonNull ButtonOptions button) {
77
-
78
- }
79
- }
@@ -1,18 +0,0 @@
1
- package com.reactnativenavigation.mocks;
2
-
3
- import android.app.Activity;
4
-
5
- import com.reactnativenavigation.react.ReactView;
6
- import com.reactnativenavigation.viewcontrollers.viewcontroller.ReactViewCreator;
7
- import com.reactnativenavigation.views.component.ComponentLayout;
8
- import com.reactnativenavigation.views.component.ReactComponent;
9
-
10
- import static org.mockito.Mockito.spy;
11
-
12
- public class TestComponentViewCreator implements ReactViewCreator {
13
- @Override
14
- public ReactComponent create(final Activity activity, final String componentId, final String componentName) {
15
- ReactView reactView = spy(new TestReactView(activity));
16
- return new ComponentLayout(activity, reactView);
17
- }
18
- }
@@ -1,71 +0,0 @@
1
- package com.reactnativenavigation.mocks;
2
-
3
- import android.content.Context;
4
- import android.os.Bundle;
5
- import android.view.MotionEvent;
6
-
7
- import com.facebook.react.ReactInstanceManager;
8
- import com.reactnativenavigation.viewcontrollers.viewcontroller.ScrollEventListener;
9
- import com.reactnativenavigation.react.ReactView;
10
- import com.reactnativenavigation.react.events.ComponentType;
11
- import com.reactnativenavigation.viewcontrollers.viewcontroller.IReactView;
12
-
13
- import androidx.annotation.NonNull;
14
- import androidx.annotation.Nullable;
15
-
16
- public class TestReactView extends ReactView implements IReactView {
17
-
18
- public TestReactView(@NonNull Context context) {
19
- super(context, null, "", "");
20
- }
21
-
22
- @Override
23
- public void startReactApplication(ReactInstanceManager reactInstanceManager, String moduleName, @Nullable Bundle initialProperties, @Nullable String initialUITemplate) {
24
-
25
- }
26
-
27
- @Override
28
- public void sendComponentWillStart(ComponentType type) {
29
-
30
- }
31
-
32
- @Override
33
- public void sendComponentStart(ComponentType type) {
34
-
35
- }
36
-
37
- @Override
38
- public void sendComponentStop(ComponentType type) {
39
-
40
- }
41
-
42
- @Override
43
- public boolean isReady() {
44
- return false;
45
- }
46
-
47
- @Override
48
- public void destroy() {
49
-
50
- }
51
-
52
- @Override
53
- public void sendOnNavigationButtonPressed(String buttonId) {
54
-
55
- }
56
-
57
- @Override
58
- public ScrollEventListener getScrollEventListener() {
59
- return null;
60
- }
61
-
62
- @Override
63
- public void dispatchTouchEventToJs(MotionEvent event) {
64
-
65
- }
66
-
67
- @Override
68
- public boolean isRendered() {
69
- return getChildCount() >= 1;
70
- }
71
- }
@@ -1,34 +0,0 @@
1
- package com.reactnativenavigation.mocks;
2
-
3
- import android.app.Activity;
4
-
5
- import com.facebook.react.ReactInstanceManager;
6
- import com.reactnativenavigation.options.ComponentOptions;
7
- import com.reactnativenavigation.react.events.ComponentType;
8
- import com.reactnativenavigation.views.stack.topbar.titlebar.TitleBarButtonCreator;
9
- import com.reactnativenavigation.views.stack.topbar.titlebar.TitleBarReactButtonView;
10
-
11
- import static org.mockito.Mockito.mock;
12
-
13
- public class TitleBarButtonCreatorMock extends TitleBarButtonCreator {
14
-
15
- public TitleBarButtonCreatorMock() {
16
- super(null);
17
- }
18
-
19
- @Override
20
- public TitleBarReactButtonView create(Activity activity, ComponentOptions component) {
21
- final ReactInstanceManager reactInstanceManager = mock(ReactInstanceManager.class);
22
- return new TitleBarReactButtonView(activity, reactInstanceManager, component) {
23
- @Override
24
- public void sendComponentStart(ComponentType type) {
25
-
26
- }
27
-
28
- @Override
29
- public void sendComponentStop(ComponentType type) {
30
-
31
- }
32
- };
33
- }
34
- }
@@ -1,20 +0,0 @@
1
- package com.reactnativenavigation.mocks;
2
-
3
- import android.app.Activity;
4
-
5
- import com.facebook.react.ReactInstanceManager;
6
- import com.reactnativenavigation.views.stack.topbar.titlebar.TitleBarReactView;
7
- import com.reactnativenavigation.views.stack.topbar.titlebar.TitleBarReactViewCreator;
8
-
9
- import static org.mockito.Mockito.mock;
10
-
11
- public class TitleBarReactViewCreatorMock extends TitleBarReactViewCreator {
12
- public TitleBarReactViewCreatorMock() {
13
- super(mock(ReactInstanceManager.class));
14
- }
15
-
16
- @Override
17
- public TitleBarReactView create(Activity activity, String componentId, String componentName) {
18
- return new TitleBarReactView(activity, instanceManager, componentId, componentName);
19
- }
20
- }
@@ -1,20 +0,0 @@
1
- package com.reactnativenavigation.mocks;
2
-
3
- import android.app.Activity;
4
-
5
- import com.facebook.react.ReactInstanceManager;
6
- import com.reactnativenavigation.views.stack.topbar.TopBarBackgroundView;
7
- import com.reactnativenavigation.views.stack.topbar.TopBarBackgroundViewCreator;
8
-
9
- import static org.mockito.Mockito.mock;
10
-
11
- public class TopBarBackgroundViewCreatorMock extends TopBarBackgroundViewCreator {
12
- public TopBarBackgroundViewCreatorMock() {
13
- super(mock(ReactInstanceManager.class));
14
- }
15
-
16
- @Override
17
- public TopBarBackgroundView create(Activity activity, String componentId, String componentName) {
18
- return new TopBarBackgroundView(activity, instanceManager, componentId, componentName);
19
- }
20
- }
@@ -1,21 +0,0 @@
1
- package com.reactnativenavigation.mocks
2
-
3
- import android.graphics.Typeface
4
- import com.reactnativenavigation.options.parsers.TypefaceLoader
5
- import org.mockito.kotlin.mock
6
-
7
- class TypefaceLoaderMock() : TypefaceLoader(mock()) {
8
- private var mockTypefaces: Map<String, Typeface>? = null
9
-
10
- constructor(mockTypefaces: Map<String, Typeface>?) : this() {
11
- this.mockTypefaces = mockTypefaces
12
-
13
- }
14
-
15
- override val defaultTypeFace: Typeface
16
- get() = Typeface.DEFAULT
17
-
18
- override fun getTypeFace(fontFamilyName: String?, fontStyle: String?, fontWeight: String?, defaultTypeFace: Typeface?): Typeface? {
19
- return mockTypefaces?.getOrDefault(fontFamilyName, defaultTypeFace) ?: defaultTypeFace
20
- }
21
- }
@@ -1,51 +0,0 @@
1
- package com.reactnativenavigation.options;
2
-
3
- import com.reactnativenavigation.*;
4
- import com.reactnativenavigation.options.parsers.LayoutNodeParser;
5
-
6
- import org.json.*;
7
- import org.junit.*;
8
-
9
- import static org.assertj.core.api.Java6Assertions.*;
10
-
11
- public class LayoutNodeParserTest extends BaseTest {
12
- @Test
13
- public void dto() throws Exception {
14
- LayoutNode node = new LayoutNode("the id", LayoutNode.Type.Component);
15
- assertThat(node.id).isEqualTo("the id");
16
- assertThat(node.type).isEqualTo(LayoutNode.Type.Component);
17
- assertThat(node.data.keys()).isEmpty();
18
- assertThat(node.children).isEmpty();
19
- }
20
-
21
- @Test
22
- public void parseType() throws Exception {
23
- assertThat(LayoutNode.Type.valueOf("Component")).isEqualTo(LayoutNode.Type.Component);
24
- }
25
-
26
- @Test(expected = RuntimeException.class)
27
- public void invalidType() throws Exception {
28
- LayoutNode.Type.valueOf("some type");
29
- }
30
-
31
- @Test
32
- public void parseFromTree() throws Exception {
33
- JSONObject tree = new JSONObject("{id: node1, " +
34
- "type: Stack, " +
35
- "data: {dataKey: dataValue}, " +
36
- "children: [{id: childId1, type: Component}]}");
37
-
38
- LayoutNode result = LayoutNodeParser.parse(tree);
39
-
40
- assertThat(result).isNotNull();
41
- assertThat(result.id).isEqualTo("node1");
42
- assertThat(result.type).isEqualTo(LayoutNode.Type.Stack);
43
- assertThat(result.data.length()).isEqualTo(1);
44
- assertThat(result.data.getString("dataKey")).isEqualTo("dataValue");
45
- assertThat(result.children).hasSize(1);
46
- assertThat(result.children.get(0).id).isEqualTo("childId1");
47
- assertThat(result.children.get(0).type).isEqualTo(LayoutNode.Type.Component);
48
- assertThat(result.children.get(0).data.keys()).isEmpty();
49
- assertThat(result.children.get(0).children).isEmpty();
50
- }
51
- }
@@ -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
- }