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.
Files changed (121) 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/RNNBridgeManager.mm +5 -3
  14. package/lib/ios/RNNComponentViewController.m +5 -0
  15. package/lib/ios/RNNLayoutOptions.h +2 -1
  16. package/lib/ios/RNNLayoutOptions.m +4 -0
  17. package/lib/ios/RNNModalHostViewManagerHandler.h +11 -0
  18. package/lib/ios/RNNModalHostViewManagerHandler.m +40 -0
  19. package/lib/ios/RNNModalManager.h +2 -2
  20. package/lib/ios/RNNModalManager.m +0 -26
  21. package/lib/ios/RNNStackPresenter.m +1 -0
  22. package/lib/ios/ReactNativeNavigation.xcodeproj/project.pbxproj +8 -0
  23. package/lib/src/interfaces/Options.ts +12 -0
  24. package/package.json +3 -1
  25. package/.buildkite/pipeline.yml +0 -59
  26. package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutOptions.java +0 -48
  27. package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +0 -178
  28. package/lib/android/app/src/test/java/com/reactnativenavigation/EnvironmentTest.java +0 -43
  29. package/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java +0 -23
  30. package/lib/android/app/src/test/java/com/reactnativenavigation/TestApplication.java +0 -35
  31. package/lib/android/app/src/test/java/com/reactnativenavigation/TestUtils.java +0 -62
  32. package/lib/android/app/src/test/java/com/reactnativenavigation/fakes/IconResolverFake.kt +0 -8
  33. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/BackDrawable.java +0 -30
  34. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/ImageLoaderMock.kt +0 -49
  35. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/Mocks.kt +0 -18
  36. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleComponentViewController.java +0 -15
  37. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleOverlay.java +0 -54
  38. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleViewController.java +0 -113
  39. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentLayout.java +0 -79
  40. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentViewCreator.java +0 -18
  41. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestReactView.java +0 -71
  42. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarButtonCreatorMock.java +0 -34
  43. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarReactViewCreatorMock.java +0 -20
  44. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TopBarBackgroundViewCreatorMock.java +0 -20
  45. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TypefaceLoaderMock.kt +0 -21
  46. package/lib/android/app/src/test/java/com/reactnativenavigation/options/LayoutNodeParserTest.java +0 -51
  47. package/lib/android/app/src/test/java/com/reactnativenavigation/options/OptionsTest.java +0 -315
  48. package/lib/android/app/src/test/java/com/reactnativenavigation/options/OrientationOptionsTest.java +0 -81
  49. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TopBarButtonsTest.kt +0 -95
  50. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TransitionAnimationOptionsTest.kt +0 -122
  51. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/BoolParserTest.java +0 -28
  52. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/ColorParseTest.java +0 -50
  53. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/JSONParserTest.java +0 -64
  54. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/PresenterTest.java +0 -56
  55. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/RenderCheckerTest.java +0 -59
  56. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/SideMenuPresenterTest.java +0 -35
  57. package/lib/android/app/src/test/java/com/reactnativenavigation/react/NavigationModuleTest.java +0 -102
  58. package/lib/android/app/src/test/java/com/reactnativenavigation/react/ReloadListenerTest.java +0 -24
  59. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/AnimationHelper.kt +0 -33
  60. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonPresenterTest.java +0 -241
  61. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonSpanTest.java +0 -57
  62. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/CompatUtilsTest.java +0 -17
  63. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/LayoutFactoryTest.java +0 -78
  64. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/MotionEventTest.kt +0 -47
  65. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/NativeCommandListenerTest.java +0 -60
  66. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/OptionHelper.java +0 -16
  67. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ReflectionUtilsTest.java +0 -26
  68. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/StringUtilsTest.java +0 -19
  69. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/SystemUiUtilsTest.kt +0 -27
  70. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleAndButtonsMeasurerTest.kt +0 -357
  71. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleBarHelper.java +0 -54
  72. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiThreadTest.java +0 -29
  73. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiUtilsTest.java +0 -22
  74. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ViewHelper.java +0 -9
  75. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/OptionsApplyingTest.java +0 -149
  76. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenterTest.java +0 -206
  77. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAttacherTest.java +0 -62
  78. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt +0 -589
  79. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsPresenterTest.kt +0 -173
  80. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AfterInitialTabTest.java +0 -38
  81. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachModeTest.java +0 -86
  82. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/OnSwitchToTabTest.java +0 -31
  83. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/TogetherTest.java +0 -20
  84. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/button/NavigationIconResolverTest.java +0 -78
  85. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +0 -80
  86. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistryTest.java +0 -56
  87. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewControllerTest.java +0 -216
  88. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/ExternalComponentViewControllerTest.java +0 -97
  89. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/FragmentCreatorMock.java +0 -34
  90. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/SomeFragment.java +0 -8
  91. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/fakes/FakeParentController.kt +0 -33
  92. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorMock.java +0 -40
  93. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorTest.kt +0 -213
  94. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +0 -319
  95. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +0 -367
  96. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +0 -898
  97. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +0 -254
  98. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManagerTest.java +0 -108
  99. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +0 -299
  100. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +0 -446
  101. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/BackButtonHelperTest.java +0 -77
  102. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/FloatingActionButtonTest.java +0 -154
  103. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/IdStackTest.java +0 -114
  104. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +0 -241
  105. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +0 -1165
  106. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +0 -1081
  107. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarButtonControllerTest.java +0 -61
  108. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarReactViewControllerTest.java +0 -43
  109. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarButtonControllerTest.java +0 -120
  110. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +0 -432
  111. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsViewControllerTest.java +0 -249
  112. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerTest.java +0 -337
  113. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegateTest.java +0 -68
  114. package/lib/android/app/src/test/java/com/reactnativenavigation/views/OverlayTouchDelegateTest.java +0 -60
  115. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TitleAndButtonsContainerTest.kt +0 -477
  116. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TopBarTest.java +0 -82
  117. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/BaseViewAnimatorTest.kt +0 -109
  118. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/DefaultViewAnimatorCreatorFake.kt +0 -36
  119. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainerTest.kt +0 -101
  120. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsTest.kt +0 -40
  121. package/lib/android/app/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker +0 -1
@@ -1,50 +0,0 @@
1
- package com.reactnativenavigation.options.parsers;
2
-
3
- import com.facebook.react.bridge.Arguments;
4
- import com.facebook.react.bridge.JavaOnlyArray;
5
- import com.facebook.react.bridge.JavaOnlyMap;
6
- import com.reactnativenavigation.BaseTest;
7
- import com.reactnativenavigation.options.params.DontApplyColour;
8
- import com.reactnativenavigation.options.params.ReactPlatformColor;
9
-
10
- import org.json.JSONArray;
11
- import org.json.JSONException;
12
- import org.json.JSONObject;
13
- import org.junit.Test;
14
- import org.mockito.MockedStatic;
15
- import org.mockito.Mockito;
16
-
17
- import static org.assertj.core.api.Java6Assertions.assertThat;
18
-
19
- import android.app.Activity;
20
-
21
- public class ColorParseTest extends BaseTest {
22
-
23
- Activity activity;
24
- @Override
25
- public void beforeEach() {
26
- super.beforeEach();
27
- activity = newActivity();
28
- }
29
-
30
- @Test
31
- public void nullIsParsedAsNoColor() throws JSONException {
32
- JSONObject json = new JSONObject();
33
- json.put("color", "NoColor");
34
- assertThat(ColorParser.parse(null, json, "color")).isInstanceOf(DontApplyColour.class);
35
- }
36
-
37
- @Test
38
- public void shouldParsePlatformColors() throws JSONException {
39
- JSONObject color = new JSONObject();
40
- final JSONArray jsonArray = new JSONArray();
41
- jsonArray.put("@color/colorPrimary");
42
- color.put("resource_paths",
43
- jsonArray);
44
- try (MockedStatic<Arguments> theMock = Mockito.mockStatic(Arguments.class)) {
45
- theMock.when(Arguments::createMap).thenReturn(new JavaOnlyMap());
46
- theMock.when(Arguments::createArray).thenReturn(new JavaOnlyArray());
47
- assertThat(ColorParser.parse(activity, color, "color")).isInstanceOf(ReactPlatformColor.class);
48
- }
49
- }
50
- }
@@ -1,64 +0,0 @@
1
- package com.reactnativenavigation.options.parsers;
2
-
3
- import com.facebook.react.bridge.JavaOnlyArray;
4
- import com.facebook.react.bridge.JavaOnlyMap;
5
- import com.reactnativenavigation.BaseTest;
6
-
7
- import org.json.JSONArray;
8
- import org.json.JSONObject;
9
- import org.junit.Test;
10
-
11
- import static org.assertj.core.api.Java6Assertions.assertThat;
12
-
13
- public class JSONParserTest extends BaseTest {
14
- @Test
15
- public void parsesMap() throws Exception {
16
- JavaOnlyMap input = new JavaOnlyMap();
17
- input.putString("keyString", "stringValue");
18
- input.putInt("keyInt", 123);
19
- input.putDouble("keyDouble", 123.456);
20
- input.putBoolean("keyBoolean", true);
21
- input.putArray("keyArray", new JavaOnlyArray());
22
- input.putMap("keyMap", new JavaOnlyMap());
23
- input.putNull("bla");
24
-
25
- JSONObject result = new JSONParser().parse(input);
26
-
27
-
28
- assertThat(result.keys()).containsOnly(
29
- "keyString",
30
- "keyInt",
31
- "keyDouble",
32
- "keyBoolean",
33
- "keyMap",
34
- "keyArray");
35
-
36
- assertThat(result.get("keyString")).isEqualTo("stringValue");
37
- assertThat(result.get("keyInt")).isEqualTo(123);
38
- assertThat(result.get("keyDouble")).isEqualTo(123.456);
39
- assertThat(result.get("keyBoolean")).isEqualTo(true);
40
- assertThat(result.getJSONObject("keyMap").keys()).isEmpty();
41
- assertThat(result.getJSONArray("keyArray").length()).isZero();
42
- }
43
-
44
- @Test
45
- public void parsesArrays() throws Exception {
46
- JavaOnlyArray input = new JavaOnlyArray();
47
- input.pushString("Hello");
48
- input.pushInt(123);
49
- input.pushDouble(123.456);
50
- input.pushBoolean(true);
51
- input.pushArray(new JavaOnlyArray());
52
- input.pushMap(new JavaOnlyMap());
53
- input.pushNull();
54
-
55
- JSONArray result = new JSONParser().parse(input);
56
- assertThat(result.length()).isEqualTo(6);
57
- assertThat(result.get(0)).isEqualTo("Hello");
58
- assertThat(result.get(1)).isEqualTo(123);
59
- assertThat(result.get(2)).isEqualTo(123.456);
60
- assertThat(result.get(3)).isEqualTo(true);
61
- assertThat(result.getJSONArray(4).length()).isZero();
62
- assertThat(result.getJSONObject(5).keys()).isEmpty();
63
- }
64
- }
@@ -1,56 +0,0 @@
1
- package com.reactnativenavigation.presentation;
2
-
3
- import android.app.Activity;
4
- import android.view.View;
5
- import android.view.ViewGroup;
6
- import android.widget.FrameLayout;
7
-
8
- import com.reactnativenavigation.BaseTest;
9
- import com.reactnativenavigation.options.Options;
10
- import com.reactnativenavigation.options.params.Bool;
11
- import com.reactnativenavigation.utils.SystemUiUtils;
12
- import com.reactnativenavigation.viewcontrollers.viewcontroller.Presenter;
13
- import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
14
-
15
- import org.junit.Test;
16
- import org.mockito.Mockito;
17
-
18
- import static org.mockito.ArgumentMatchers.any;
19
- import static org.mockito.ArgumentMatchers.eq;
20
- import static org.mockito.Mockito.mock;
21
- import static org.mockito.Mockito.times;
22
- import static org.mockito.Mockito.verify;
23
-
24
- public class PresenterTest extends BaseTest {
25
- private Presenter uut;
26
- private Activity activity;
27
- private ViewController<ViewGroup> controller;
28
-
29
- @Override
30
- public void beforeEach() {
31
- super.beforeEach();
32
- activity = newActivity();
33
- controller = mock(ViewController.class);
34
- uut = new Presenter(activity, Options.EMPTY);
35
- }
36
-
37
- @Test
38
- public void mergeStatusBarVisible_callsShowHide() {
39
- mockSystemUiUtils(1,1,(mockedStatic)->{
40
- ViewGroup spy = Mockito.spy(new FrameLayout(activity));
41
- Mockito.when(controller.getView()).thenReturn(spy);
42
- Mockito.when(controller.resolveCurrentOptions()).thenReturn(Options.EMPTY);
43
- Options options = new Options();
44
- options.statusBar.visible = new Bool(false);
45
- uut.mergeOptions(controller, options);
46
- mockedStatic.verify(
47
- ()-> SystemUiUtils.hideStatusBar(any(),eq(spy)),times(1));
48
-
49
- options.statusBar.visible = new Bool(true);
50
- uut.mergeOptions(controller, options);
51
- mockedStatic.verify(
52
- ()-> SystemUiUtils.showStatusBar(any(),eq(spy)),times(1));
53
- });
54
-
55
- }
56
- }
@@ -1,59 +0,0 @@
1
- package com.reactnativenavigation.presentation;
2
-
3
- import com.reactnativenavigation.BaseTest;
4
- import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
5
- import com.reactnativenavigation.utils.RenderChecker;
6
-
7
- import org.junit.Test;
8
- import org.mockito.Mockito;
9
-
10
- import java.util.Arrays;
11
- import java.util.Collection;
12
-
13
- import static com.reactnativenavigation.utils.CollectionUtils.forEach;
14
- import static org.assertj.core.api.Java6Assertions.assertThat;
15
- import static org.mockito.Mockito.verify;
16
- import static org.mockito.Mockito.when;
17
-
18
- public class RenderCheckerTest extends BaseTest {
19
- private RenderChecker uut;
20
-
21
- @Override
22
- public void beforeEach() {
23
- uut = new RenderChecker();
24
- }
25
-
26
- @Test
27
- public void areRendered() {
28
- Collection<ViewController<?>> items = Arrays.asList(
29
- renderedComponent(),
30
- renderedComponent(),
31
- renderedComponent()
32
- );
33
- assertThat(uut.areRendered(items)).isTrue();
34
- forEach(items, i -> verify(i).isRendered());
35
- }
36
-
37
- @Test
38
- public void areRendered_reduce() {
39
- Collection<ViewController<?>> items = Arrays.asList(
40
- renderedComponent(),
41
- notRenderedComponent(),
42
- renderedComponent()
43
- );
44
- assertThat(uut.areRendered(items)).isFalse();
45
-
46
- }
47
-
48
- private ViewController<?> renderedComponent() {
49
- ViewController<?> mock = Mockito.mock(ViewController.class);
50
- when(mock.isRendered()).then(__ -> true);
51
- return mock;
52
- }
53
-
54
- private ViewController<?> notRenderedComponent() {
55
- ViewController<?> mock = Mockito.mock(ViewController.class);
56
- when(mock.isRendered()).then(__ -> false);
57
- return mock;
58
- }
59
- }
@@ -1,35 +0,0 @@
1
- package com.reactnativenavigation.presentation;
2
-
3
- import com.reactnativenavigation.BaseTest;
4
- import com.reactnativenavigation.viewcontrollers.sidemenu.SideMenuPresenter;
5
- import com.reactnativenavigation.options.SideMenuRootOptions;
6
- import com.reactnativenavigation.options.params.Bool;
7
- import com.reactnativenavigation.views.sidemenu.SideMenu;
8
-
9
- import org.junit.Test;
10
- import org.mockito.Mockito;
11
-
12
- import static org.junit.Assert.assertFalse;
13
-
14
- public class SideMenuPresenterTest extends BaseTest {
15
- private SideMenuPresenter uut;
16
-
17
- @Override
18
- public void beforeEach() {
19
- uut = new SideMenuPresenter();
20
- SideMenu sideMenu = Mockito.mock(SideMenu.class);
21
- uut.bindView(sideMenu);
22
- }
23
-
24
- @Test
25
- public void mergeVisibility_visibilityOptionsAreConsumed() {
26
- SideMenuRootOptions options = new SideMenuRootOptions();
27
- options.left.visible = new Bool(true);
28
- options.right.visible = new Bool(true);
29
-
30
- uut.mergeOptions(options);
31
-
32
- assertFalse(options.right.visible.hasValue());
33
- assertFalse(options.left.visible.hasValue());
34
- }
35
- }
@@ -1,102 +0,0 @@
1
- package com.reactnativenavigation.react;
2
-
3
- import com.facebook.react.ReactInstanceManager;
4
- import com.facebook.react.bridge.Promise;
5
- import com.facebook.react.bridge.ReactApplicationContext;
6
- import com.facebook.react.bridge.ReadableMap;
7
- import com.reactnativenavigation.BaseTest;
8
- import com.reactnativenavigation.NavigationActivity;
9
- import com.reactnativenavigation.options.LayoutFactory;
10
- import com.reactnativenavigation.options.LayoutNode;
11
- import com.reactnativenavigation.options.parsers.JSONParser;
12
- import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
13
- import com.reactnativenavigation.viewcontrollers.navigator.Navigator;
14
-
15
- import org.json.JSONException;
16
- import org.json.JSONObject;
17
- import org.junit.Test;
18
- import org.robolectric.annotation.LooperMode;
19
- import org.robolectric.shadows.ShadowLooper;
20
-
21
- import static org.mockito.ArgumentMatchers.any;
22
- import static org.mockito.ArgumentMatchers.eq;
23
- import static org.mockito.Mockito.mock;
24
- import static org.mockito.Mockito.spy;
25
- import static org.mockito.Mockito.times;
26
- import static org.mockito.Mockito.verify;
27
- import static org.mockito.Mockito.when;
28
-
29
- @LooperMode(LooperMode.Mode.PAUSED)
30
- public class NavigationModuleTest extends BaseTest {
31
- private NavigationModule uut;
32
- private Navigator navigator;
33
- private JSONParser jsonParser;
34
- private NavigationActivity activity;
35
- private ReactApplicationContext reactApplicationContext;
36
- private LayoutFactory layoutFactory;
37
-
38
- @Override
39
- public void beforeEach() {
40
- jsonParser = mock(JSONParser.class);
41
- navigator = mock(Navigator.class);
42
- activity = mockActivity();
43
- reactApplicationContext = mock(ReactApplicationContext.class);
44
- layoutFactory = mock(LayoutFactory.class);
45
-
46
- uut = spy(new NavigationModule(
47
- reactApplicationContext,
48
- mock(ReactInstanceManager.class),
49
- jsonParser,
50
- layoutFactory
51
- ));
52
- }
53
-
54
- @Test
55
- public void setRoot_delegatesToNavigator() throws JSONException {
56
- when(reactApplicationContext.getCurrentActivity()).thenReturn(activity);
57
- ReadableMap root = mock(ReadableMap.class);
58
- when(jsonParser.parse(root)).thenReturn(rootJson());
59
- ViewController rootViewController = mock(ViewController.class);
60
- when(layoutFactory.create(any(LayoutNode.class))).thenReturn(rootViewController);
61
-
62
- uut.setRoot("1", root, mock(Promise.class));
63
- ShadowLooper.idleMainLooper();
64
- verify(navigator).setRoot(eq(rootViewController), any(), any());
65
- }
66
-
67
- @Test
68
- public void postCommandsOnMainThread_doesNotCrashIfActivityIsNull() {
69
- NavigationModule spy = spy(uut);
70
- when(spy.activity()).thenReturn(mock(NavigationActivity.class));
71
- Runnable runnable = mock(Runnable.class);
72
- spy.handle(runnable);
73
- ShadowLooper.idleMainLooper();
74
- verify(runnable).run();
75
-
76
- when(spy.activity()).thenReturn(null);
77
- Runnable dontRun = mock(Runnable.class);
78
- spy.handle(dontRun);
79
- ShadowLooper.idleMainLooper();
80
- verify(dontRun, times(0)).run();
81
- }
82
-
83
- private NavigationActivity mockActivity() {
84
- NavigationActivity activity = mock(NavigationActivity.class);
85
- when(activity.getNavigator()).thenReturn(navigator);
86
- return activity;
87
- }
88
-
89
- private JSONObject rootJson() throws JSONException {
90
- JSONObject root = new JSONObject();
91
- root.put("root", componentJson());
92
- return root;
93
- }
94
-
95
- private JSONObject componentJson() throws JSONException {
96
- JSONObject component = new JSONObject();
97
- component.put("id", "Component1");
98
- component.put("type", "Component");
99
- component.put("data", new JSONObject().put("name", "mockComponent"));
100
- return component;
101
- }
102
- }
@@ -1,24 +0,0 @@
1
- package com.reactnativenavigation.react;
2
-
3
- import com.reactnativenavigation.BaseTest;
4
-
5
- import org.junit.Test;
6
- import org.mockito.Mockito;
7
-
8
- public class ReloadListenerTest extends BaseTest {
9
- private ReloadHandler uut;
10
- private Runnable handler;
11
-
12
- @Override
13
- public void beforeEach() {
14
- handler = Mockito.mock(Runnable.class);
15
- uut = new ReloadHandler();
16
- }
17
-
18
- @Test
19
- public void onSuccess_viewsAreDestroyed() {
20
- uut.setOnReloadListener(handler);
21
- uut.onSuccess();
22
- Mockito.verify(handler).run();
23
- }
24
- }
@@ -1,33 +0,0 @@
1
- package com.reactnativenavigation.utils
2
-
3
- import com.reactnativenavigation.options.AnimationOptions
4
- import com.reactnativenavigation.options.ValueAnimationOptions
5
- import com.reactnativenavigation.options.animations.ViewAnimationOptions
6
- import org.json.JSONObject
7
-
8
-
9
- fun createEnterExitAnimation(duration: Int = 300): ViewAnimationOptions {
10
- val alpha = JSONObject().apply {
11
- put("alpha", JSONObject().apply {
12
- put("from", 0)
13
- put("to", 0)
14
- put("duration", duration)
15
- })
16
- }
17
- val animation = JSONObject().apply {
18
- put("enter", alpha)
19
- put("exit", alpha)
20
- }
21
- return ViewAnimationOptions(animation)
22
- }
23
-
24
- fun createContentJson(vararg values: Pair<String, ValueAnimationOptions>): AnimationOptions {
25
- val content = JSONObject()
26
- values.forEach {
27
- content.put(it.first, JSONObject().apply {
28
- put("from", it.second.from)
29
- put("to", it.second.to)
30
- })
31
- }
32
- return AnimationOptions(content)
33
- }
@@ -1,241 +0,0 @@
1
- package com.reactnativenavigation.utils;
2
-
3
- import android.app.Activity;
4
- import android.content.res.Configuration;
5
- import android.graphics.Color;
6
- import android.graphics.PorterDuff;
7
- import android.graphics.PorterDuffColorFilter;
8
- import android.graphics.drawable.Drawable;
9
- import android.text.SpannableString;
10
- import android.view.Menu;
11
- import android.view.MenuItem;
12
- import android.widget.TextView;
13
-
14
- import androidx.appcompat.widget.ActionMenuView;
15
-
16
- import com.reactnativenavigation.BaseTest;
17
- import com.reactnativenavigation.fakes.IconResolverFake;
18
- import com.reactnativenavigation.mocks.ImageLoaderMock;
19
- import com.reactnativenavigation.options.ButtonOptions;
20
- import com.reactnativenavigation.options.IconBackgroundOptions;
21
- import com.reactnativenavigation.options.params.Bool;
22
- import com.reactnativenavigation.options.params.Colour;
23
- import com.reactnativenavigation.options.params.Number;
24
- import com.reactnativenavigation.options.params.ThemeColour;
25
- import com.reactnativenavigation.options.params.Text;
26
- import com.reactnativenavigation.viewcontrollers.stack.topbar.button.ButtonController;
27
- import com.reactnativenavigation.viewcontrollers.stack.topbar.button.ButtonPresenter;
28
- import com.reactnativenavigation.views.stack.topbar.titlebar.ButtonBar;
29
- import com.reactnativenavigation.views.stack.topbar.titlebar.IconBackgroundDrawable;
30
- import com.reactnativenavigation.views.stack.topbar.titlebar.TitleBarButtonCreator;
31
-
32
- import org.junit.Test;
33
- import org.robolectric.annotation.LooperMode;
34
- import org.robolectric.shadows.ShadowLooper;
35
-
36
- import static java.util.Objects.requireNonNull;
37
- import static org.assertj.core.api.Java6Assertions.assertThat;
38
- import static org.mockito.Mockito.mock;
39
- import static org.mockito.Mockito.spy;
40
- import static org.mockito.Mockito.verify;
41
-
42
- @LooperMode(LooperMode.Mode.PAUSED)
43
- public class ButtonPresenterTest extends BaseTest {
44
- private static final String BTN_TEXT = "button1";
45
-
46
- private ButtonBar titleBar;
47
- private ButtonPresenter uut;
48
- private ButtonController buttonController;
49
- private ButtonOptions button;
50
- private Activity activity;
51
-
52
- @Override
53
- public void beforeEach() {
54
- super.beforeEach();
55
- activity = newActivity();
56
- titleBar = new ButtonBar(activity);
57
- activity.setContentView(titleBar);
58
- button = createButton();
59
- ImageLoader imageLoaderMock;
60
-
61
- imageLoaderMock = ImageLoaderMock.mock();
62
- initUUt(imageLoaderMock);
63
- }
64
-
65
- private void initUUt(ImageLoader imageLoaderMock) {
66
- IconResolverFake iconResolver = new IconResolverFake(activity, imageLoaderMock);
67
- uut = new ButtonPresenter(activity, button, iconResolver);
68
- buttonController = new ButtonController(
69
- activity,
70
- uut,
71
- button,
72
- mock(TitleBarButtonCreator.class),
73
- mock(ButtonController.OnClickListener.class)
74
- );
75
- }
76
-
77
- @Test
78
- public void applyOptions_buttonIsAddedToMenu() {
79
- addButtonAndApplyOptions();
80
- assertThat(findButtonView().getText().toString()).isEqualTo(BTN_TEXT);
81
- }
82
-
83
- @Test
84
- public void applyOptions_appliesColorOnButtonTextView() {
85
- button.color = new ThemeColour(new Colour(Color.RED), new Colour(Color.RED));
86
- addButtonAndApplyOptions();
87
- assertThat(findButtonView().getCurrentTextColor()).isEqualTo(Color.RED);
88
- }
89
-
90
- @Test
91
- public void applyOptions_appliesColorOnButtonTextViewOnDarkMode() {
92
- mockConfiguration.uiMode = Configuration.UI_MODE_NIGHT_NO;
93
- button.color = new ThemeColour(new Colour(Color.RED), new Colour(Color.BLACK));
94
- MenuItem menuItem = addButtonAndApplyOptions();
95
- assertThat(findButtonView().getCurrentTextColor()).isEqualTo(Color.RED);
96
-
97
- mockConfiguration.uiMode = Configuration.UI_MODE_NIGHT_YES;
98
- uut.applyOptions(titleBar, menuItem, buttonController::getView);
99
- assertThat(findButtonView().getCurrentTextColor()).isEqualTo(Color.BLACK);
100
-
101
- }
102
-
103
- @Test
104
- public void apply_disabledColor() {
105
- button.enabled = new Bool(false);
106
- addButtonAndApplyOptions();
107
- assertThat(findButtonView().getCurrentTextColor()).isEqualTo(ButtonPresenter.DISABLED_COLOR);
108
- }
109
-
110
- @Test
111
- public void applyColor_shouldChangeColor() {
112
- MenuItem menuItem = addMenuButton();
113
-
114
- uut.applyOptions(titleBar, menuItem, buttonController::getView);
115
- ThemeColour color = new ThemeColour(new Colour(Color.RED), new Colour(Color.RED));
116
- uut.applyColor(titleBar, menuItem, color);
117
- assertThat(findButtonView().getCurrentTextColor()).isEqualTo(Color.RED);
118
- }
119
-
120
- @Test
121
- public void applyOptions_shouldChangeIconColorTint() {
122
- IconBackgroundDrawable mockD = mock(IconBackgroundDrawable.class);
123
- initUUt(ImageLoaderMock.mock(mockD));
124
- button.enabled = new Bool(true);
125
- button.icon = new Text("icon");
126
- button.color = new ThemeColour(new Colour(Color.RED), new Colour(Color.RED));
127
- MenuItem menuItem = spy(addMenuButton());
128
- uut.applyOptions(titleBar, menuItem, buttonController::getView);
129
-
130
- Drawable icon = menuItem.getIcon();
131
- assertThat(icon).isNotNull();
132
- verify(icon).setColorFilter(new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.SRC_IN));
133
- }
134
-
135
- @Test
136
- public void applyOptions_shouldChangeIconDisabledColorTint() {
137
- IconBackgroundDrawable mockD = mock(IconBackgroundDrawable.class);
138
- initUUt(ImageLoaderMock.mock(mockD));
139
- button.enabled = new Bool(false);
140
- button.icon = new Text("icon");
141
- button.color = new ThemeColour(new Colour(Color.RED), new Colour(Color.RED));
142
- button.disabledColor = new ThemeColour(new Colour(Color.YELLOW), new Colour(Color.YELLOW));
143
- MenuItem menuItem = spy(addMenuButton());
144
- uut.applyOptions(titleBar, menuItem, buttonController::getView);
145
-
146
- Drawable icon = menuItem.getIcon();
147
- assertThat(icon).isNotNull();
148
- verify(icon).setColorFilter(new PorterDuffColorFilter(Color.YELLOW, PorterDuff.Mode.SRC_IN));
149
- }
150
-
151
- @Test
152
- public void applyOptions_shouldChangeIconColorBackground() {
153
- IconBackgroundDrawable mockD = mock(IconBackgroundDrawable.class);
154
- initUUt(ImageLoaderMock.mock(mockD));
155
- button.enabled = new Bool(true);
156
- button.icon = new Text("icon");
157
- button.color = new ThemeColour(new Colour(Color.RED), new Colour(Color.RED));
158
- IconBackgroundOptions iconBackground = new IconBackgroundOptions();
159
- iconBackground.color = new ThemeColour(new Colour(Color.GREEN),new Colour(Color.GREEN));
160
- button.iconBackground = iconBackground;
161
- MenuItem menuItem = spy(addMenuButton());
162
- uut.applyOptions(titleBar, menuItem, buttonController::getView);
163
-
164
- Drawable icon = menuItem.getIcon();
165
- assertThat(icon).isNotNull();
166
- assertThat(icon).isInstanceOf(IconBackgroundDrawable.class);
167
- IconBackgroundDrawable modifed = (IconBackgroundDrawable) icon;
168
- verify(modifed.getWrappedDrawable()).setColorFilter(new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.SRC_IN));
169
- assertThat(modifed.getBackgroundColor()).isEqualTo(Color.GREEN);
170
- }
171
-
172
- @Test
173
- public void applyOptions_shouldChangeIconDisabledColorBackground() {
174
- IconBackgroundDrawable mockD = mock(IconBackgroundDrawable.class);
175
- initUUt(ImageLoaderMock.mock(mockD));
176
- button.enabled = new Bool(false);
177
- button.icon = new Text("icon");
178
- button.color = new ThemeColour(new Colour(Color.RED), new Colour(Color.RED));
179
- button.disabledColor = new ThemeColour(new Colour(Color.YELLOW), new Colour(Color.YELLOW));
180
- IconBackgroundOptions iconBackground = new IconBackgroundOptions();
181
- iconBackground.color = new ThemeColour( new Colour(Color.GREEN), new Colour(Color.GREEN));
182
- iconBackground.disabledColor = new ThemeColour(new Colour(Color.CYAN),new Colour(Color.CYAN));
183
- button.iconBackground = iconBackground;
184
- MenuItem menuItem = spy(addMenuButton());
185
- uut.applyOptions(titleBar, menuItem, buttonController::getView);
186
-
187
- Drawable icon = menuItem.getIcon();
188
- assertThat(icon).isNotNull();
189
- assertThat(icon).isInstanceOf(IconBackgroundDrawable.class);
190
- IconBackgroundDrawable modifed = (IconBackgroundDrawable) icon;
191
- verify(modifed.getWrappedDrawable()).setColorFilter(new PorterDuffColorFilter(Color.YELLOW, PorterDuff.Mode.SRC_IN));
192
- assertThat(modifed.getBackgroundColor()).isEqualTo(Color.CYAN);
193
- }
194
-
195
- @Test
196
- public void applyColor_shouldChangeDisabledColor() {
197
- button.enabled = new Bool(false);
198
- MenuItem menuItem = addMenuButton();
199
- uut.applyOptions(titleBar, menuItem, buttonController::getView);
200
- ThemeColour disabledColor = new ThemeColour(new Colour(Color.BLUE), new Colour(Color.BLUE));
201
- uut.applyDisabledColor(titleBar, menuItem, disabledColor);
202
- assertThat(findButtonView().getCurrentTextColor()).isEqualTo(Color.BLUE);
203
- }
204
-
205
- private MenuItem addButtonAndApplyOptions() {
206
- MenuItem menuItem = addMenuButton();
207
- uut.applyOptions(titleBar, menuItem, buttonController::getView);
208
- return menuItem;
209
- }
210
-
211
- private MenuItem addMenuButton() {
212
- return titleBar.addButton(Menu.NONE,
213
- 1,
214
- 0,
215
- SpannableString.valueOf(button.text.get("text")));
216
- }
217
-
218
- @Test
219
- public void apply_allCaps() {
220
- button.allCaps = new Bool(false);
221
- addButtonAndApplyOptions();
222
- assertThat(findButtonView().isAllCaps()).isEqualTo(false);
223
- }
224
-
225
- private TextView findButtonView() {
226
- ShadowLooper.idleMainLooper();
227
- return (TextView) ViewUtils.findChildrenByClass(
228
- requireNonNull(ViewUtils.findChildByClass(titleBar, ActionMenuView.class)),
229
- TextView.class,
230
- child -> true
231
- ).get(0);
232
- }
233
-
234
- private ButtonOptions createButton() {
235
- ButtonOptions b = new ButtonOptions();
236
- b.id = "btn1";
237
- b.text = new Text(BTN_TEXT);
238
- b.showAsAction = new Number(MenuItem.SHOW_AS_ACTION_ALWAYS);
239
- return b;
240
- }
241
- }