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,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
- }
@@ -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
- }
@@ -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
- }
@@ -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
- }