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,173 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.bottomtabs
2
-
3
- import android.animation.AnimatorSet
4
- import android.content.res.Configuration
5
- import android.graphics.Color
6
- import org.mockito.kotlin.*
7
- import com.reactnativenavigation.BaseTest
8
- import com.reactnativenavigation.mocks.SimpleViewController
9
- import com.reactnativenavigation.options.Options
10
- import com.reactnativenavigation.options.ShadowOptions
11
- import com.reactnativenavigation.options.params.*
12
- import com.reactnativenavigation.options.params.Number
13
- import com.reactnativenavigation.viewcontrollers.child.ChildControllersRegistry
14
- import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController
15
- import com.reactnativenavigation.views.bottomtabs.BottomTabs
16
- import com.reactnativenavigation.views.bottomtabs.BottomTabsContainer
17
- import org.assertj.core.api.Java6Assertions.assertThat
18
- import org.junit.Test
19
-
20
- class BottomTabsPresenterTest : BaseTest() {
21
- private lateinit var tabs: List<ViewController<*>>
22
- private lateinit var uut: BottomTabsPresenter
23
- private lateinit var bottomTabs: BottomTabs
24
- private lateinit var bottomTabsContainer: BottomTabsContainer
25
- private lateinit var animator: BottomTabsAnimator
26
- private lateinit var tabSelector: TabSelector
27
-
28
- override fun beforeEach() {
29
- super.beforeEach()
30
- val activity = newActivity()
31
- val childRegistry = ChildControllersRegistry()
32
- val child1 = spy(SimpleViewController(activity, childRegistry, "child1", Options()))
33
- val child2 = spy(SimpleViewController(activity, childRegistry, "child2", Options()))
34
- tabs = listOf(child1, child2)
35
- bottomTabsContainer = mock()
36
- bottomTabs = mock()
37
- whenever(bottomTabsContainer.bottomTabs).thenReturn(bottomTabs)
38
- animator = spy(BottomTabsAnimator(bottomTabs))
39
- uut = BottomTabsPresenter(tabs, Options(), animator)
40
- tabSelector = mock()
41
- uut.bindView(bottomTabsContainer, tabSelector)
42
- }
43
-
44
- @Test
45
- fun onConfigurationChange_shouldApplyColors() {
46
- val options = Options.EMPTY
47
- options.bottomTabsOptions.backgroundColor = ThemeColour.of(Color.BLACK, Color.RED)
48
- options.bottomTabsOptions.borderColor = ThemeColour.of(Color.BLACK, Color.RED)
49
- options.bottomTabsOptions.shadowOptions = ShadowOptions(ThemeColour.of(Color.BLACK, Color.RED))
50
- mockConfiguration.uiMode = Configuration.UI_MODE_NIGHT_NO
51
- uut.onConfigurationChanged(options)
52
- verify(bottomTabs).setBackgroundColor(Color.BLACK)
53
- verify(bottomTabsContainer).setTopOutLineColor(Color.BLACK)
54
- verify(bottomTabsContainer).shadowColor = Color.BLACK
55
-
56
- mockConfiguration.uiMode = Configuration.UI_MODE_NIGHT_YES
57
- uut.onConfigurationChanged(options)
58
- verify(bottomTabs).setBackgroundColor(Color.RED)
59
- verify(bottomTabsContainer).setTopOutLineColor(Color.RED)
60
- verify(bottomTabsContainer).shadowColor = Color.RED
61
- }
62
-
63
- @Test
64
- fun mergeChildOptions_onlyDeclaredOptionsAreApplied() { // default options are not applied on merge
65
- val defaultOptions = Options()
66
- defaultOptions.bottomTabsOptions.visible = Bool(false)
67
- uut.setDefaultOptions(defaultOptions)
68
- val options = Options()
69
- options.bottomTabsOptions.backgroundColor = ThemeColour(Colour(10))
70
- uut.mergeChildOptions(options, tabs[0])
71
- verify(bottomTabs).setBackgroundColor(options.bottomTabsOptions.backgroundColor.get())
72
- verifyNoMoreInteractions(bottomTabs)
73
- }
74
-
75
- @Test
76
- fun mergeChildOptions_visibilityIsAppliedOnlyIfChildIsShown() {
77
- assertThat(tabs[0].isViewShown).isFalse()
78
- assertThat(bottomTabs.isHidden).isFalse()
79
-
80
- val options = Options()
81
- options.bottomTabsOptions.visible = Bool(false)
82
- uut.mergeChildOptions(options, tabs[0])
83
- verify(animator, never()).hide()
84
-
85
- whenever(tabs[0].isViewShown).thenAnswer { true }
86
- uut.mergeChildOptions(options, tabs[0])
87
- verify(animator).hide(any(), any(), anyOrNull())
88
- }
89
-
90
- @Test
91
- fun applyChildOptions_currentTabIndexIsConsumedAfterApply() {
92
- val defaultOptions = Options()
93
- defaultOptions.bottomTabsOptions.currentTabIndex = Number(1)
94
- uut.setDefaultOptions(defaultOptions)
95
- uut.applyChildOptions(Options.EMPTY, tabs[0])
96
- verify(tabSelector).selectTab(1)
97
- uut.applyChildOptions(Options.EMPTY, tabs[0])
98
- verifyNoMoreInteractions(tabSelector)
99
- }
100
-
101
- @Test
102
- fun applyChildOptions_currentTabIdIsConsumedAfterApply() {
103
- val defaultOptions = Options()
104
- defaultOptions.bottomTabsOptions.currentTabId = Text(tabs[1].id)
105
- uut.setDefaultOptions(defaultOptions)
106
- uut.applyChildOptions(Options.EMPTY, tabs[0])
107
- verify(tabSelector).selectTab(1)
108
- uut.applyChildOptions(Options.EMPTY, tabs[0])
109
- verifyNoMoreInteractions(tabSelector)
110
- }
111
-
112
- @Test
113
- fun getPushAnimation_returnsNullIfAnimateFalse() {
114
- val appearing = Options()
115
- appearing.bottomTabsOptions.animate = Bool(false)
116
- assertThat(uut.getPushAnimation(appearing)).isNull()
117
- }
118
-
119
- @Test
120
- fun getPushAnimation_delegatesToAnimator() {
121
- val someAnimator = AnimatorSet()
122
- val options = Options.EMPTY
123
- doReturn(someAnimator).whenever(animator).getPushAnimation(
124
- options.animations.push.bottomTabs,
125
- options.bottomTabsOptions.visible,
126
- 0f
127
- )
128
- val result = uut.getPushAnimation(options)
129
- assertThat(result).isEqualTo(someAnimator)
130
- }
131
-
132
- @Test
133
- fun getPopAnimation_returnsNullIfAnimateFalse() {
134
- val appearing = Options()
135
- val disappearing = Options()
136
- disappearing.bottomTabsOptions.animate = Bool(false)
137
- assertThat(uut.getPopAnimation(appearing, disappearing)).isNull()
138
- }
139
-
140
- @Test
141
- fun getPopAnimation_delegatesToAnimator() {
142
- val someAnimator = AnimatorSet()
143
- val appearing = Options.EMPTY
144
- val disappearing = Options.EMPTY
145
- doReturn(someAnimator).whenever(animator).getPopAnimation(
146
- disappearing.animations.pop.bottomTabs,
147
- appearing.bottomTabsOptions.visible,
148
- 0f
149
- )
150
- val result = uut.getPopAnimation(appearing, disappearing)
151
- assertThat(result).isEqualTo(someAnimator)
152
- }
153
-
154
- @Test
155
- fun getSetStackRootAnimation_returnsNullIfAnimateFalse() {
156
- val appearing = Options()
157
- appearing.bottomTabsOptions.animate = Bool(false)
158
- assertThat(uut.getSetStackRootAnimation(appearing)).isNull()
159
- }
160
-
161
- @Test
162
- fun getSetStackRootAnimation_delegatesToAnimator() {
163
- val someAnimator = AnimatorSet()
164
- val options = Options.EMPTY
165
- doReturn(someAnimator).whenever(animator).getSetStackRootAnimation(
166
- options.animations.setStackRoot.bottomTabs,
167
- options.bottomTabsOptions.visible,
168
- 0f
169
- )
170
- val result = uut.getSetStackRootAnimation(options)
171
- assertThat(result).isEqualTo(someAnimator)
172
- }
173
- }
@@ -1,38 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.bottomtabs.attacher.modes;
2
-
3
-
4
- import org.junit.Test;
5
-
6
- import static org.mockito.ArgumentMatchers.any;
7
- import static org.mockito.Mockito.verify;
8
-
9
- public class AfterInitialTabTest extends AttachModeTest {
10
-
11
- @Override
12
- public void beforeEach() {
13
- super.beforeEach();
14
- uut = new AfterInitialTab(parent, tabs, presenter, options);
15
- }
16
-
17
- @Test
18
- public void attach_initialTabIsAttached() {
19
- uut.attach();
20
- assertIsChild(parent, tab2);
21
- }
22
-
23
- @Test
24
- public void attach_otherTabsAreAttachedAfterInitialTab() {
25
- uut.attach();
26
- assertNotChildOf(parent, otherTabs());
27
-
28
- initialTab().onViewWillAppear();
29
- idleMainLooper();
30
- assertIsChild(parent, otherTabs());
31
- }
32
-
33
- @Test
34
- public void destroy() {
35
- uut.destroy();
36
- verify(initialTab()).removeOnAppearedListener(any());
37
- }
38
- }
@@ -1,86 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.bottomtabs.attacher.modes;
2
-
3
- import android.app.Activity;
4
- import android.view.View;
5
- import android.view.ViewGroup;
6
-
7
- import com.reactnativenavigation.BaseTest;
8
- import com.reactnativenavigation.mocks.SimpleViewController;
9
- import com.reactnativenavigation.options.Options;
10
- import com.reactnativenavigation.options.params.Number;
11
- import com.reactnativenavigation.viewcontrollers.bottomtabs.BottomTabsPresenter;
12
- import com.reactnativenavigation.viewcontrollers.child.ChildControllersRegistry;
13
- import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
14
- import com.reactnativenavigation.views.bottomtabs.BottomTabsBehaviour;
15
-
16
- import org.junit.Test;
17
- import org.mockito.Mockito;
18
-
19
- import java.util.Arrays;
20
- import java.util.List;
21
-
22
- import androidx.coordinatorlayout.widget.CoordinatorLayout;
23
-
24
- import static com.reactnativenavigation.utils.CollectionUtils.*;
25
- import static org.assertj.core.api.Java6Assertions.assertThat;
26
- import static org.mockito.Mockito.spy;
27
-
28
- public abstract class AttachModeTest extends BaseTest {
29
- private static final int INITIAL_TAB = 1;
30
-
31
- private Activity activity;
32
- private ChildControllersRegistry childRegistry;
33
- protected ViewGroup parent;
34
- ViewController<?> tab1;
35
- ViewController<?> tab2;
36
- List<ViewController<?>> tabs;
37
- protected Options options;
38
- protected BottomTabsPresenter presenter;
39
- protected AttachMode uut;
40
-
41
- @Override
42
- public void beforeEach() {
43
- activity = newActivity();
44
- childRegistry = new ChildControllersRegistry();
45
- parent = new CoordinatorLayout(activity);
46
- tabs = createTabs();
47
- options = new Options();
48
- options.bottomTabsOptions.currentTabIndex = new Number(INITIAL_TAB);
49
- presenter = Mockito.mock(BottomTabsPresenter.class);
50
- }
51
-
52
- @Test
53
- public void attach_layoutOptionsAreApplied() {
54
- uut.attach(tab1);
55
- CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) tab1.getView().getLayoutParams();
56
- assertThat(lp).isNotNull();
57
- assertThat(lp.getBehavior()).isInstanceOf(BottomTabsBehaviour.class);
58
- }
59
-
60
- @Test
61
- public void attach_initialTabIsVisible() {
62
- uut.attach(initialTab());
63
- assertThat(initialTab().getView().getVisibility()).isEqualTo(View.VISIBLE);
64
- }
65
-
66
- @Test
67
- public void attach_otherTabsAreInvisibleWhenAttached() {
68
- forEach(otherTabs(), t -> uut.attach(t));
69
- forEach(otherTabs(), t -> assertThat(t.getView().getVisibility()).isEqualTo(View.INVISIBLE));
70
- }
71
-
72
- ViewController<?>[] otherTabs() {
73
- return filter(tabs, t -> t != initialTab()).toArray(new ViewController[0]);
74
- }
75
-
76
- ViewController<?> initialTab() {
77
- return tabs.get(INITIAL_TAB);
78
- }
79
-
80
- private List<ViewController<?>> createTabs() {
81
- tab1 = new SimpleViewController(activity, childRegistry, "child1", new Options());
82
- tab2 = spy(new SimpleViewController(activity, childRegistry, "child2", new Options()));
83
- ViewController<?> tab3 = new SimpleViewController(activity, childRegistry, "child3", new Options());
84
- return Arrays.asList(tab1, tab2, tab3);
85
- }
86
- }
@@ -1,31 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.bottomtabs.attacher.modes;
2
-
3
- import org.junit.*;
4
-
5
- public class OnSwitchToTabTest extends AttachModeTest {
6
-
7
- @Override
8
- public void beforeEach() {
9
- super.beforeEach();
10
- uut = new OnSwitchToTab(parent, tabs, presenter, options);
11
- }
12
-
13
- @Test
14
- public void attach_onlyInitialTabIsAttached() {
15
- uut.attach();
16
- assertIsChild(parent, initialTab());
17
- assertNotChildOf(parent, otherTabs());
18
- }
19
-
20
- @Test
21
- public void onTabSelected_initialTabIsNotHandled() {
22
- uut.onTabSelected(initialTab());
23
- assertNotChildOf(parent, initialTab());
24
- }
25
-
26
- @Test
27
- public void onTabSelected_otherTabIsAttached() {
28
- uut.onTabSelected(tab1);
29
- assertIsChild(parent, tab1);
30
- }
31
- }
@@ -1,20 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.bottomtabs.attacher.modes;
2
-
3
- import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
4
-
5
- import org.junit.*;
6
-
7
- public class TogetherTest extends AttachModeTest {
8
-
9
- @Override
10
- public void beforeEach() {
11
- super.beforeEach();
12
- uut = new Together(parent, tabs, presenter, options);
13
- }
14
-
15
- @Test
16
- public void attach_allTabsAreAttached() {
17
- uut.attach();
18
- assertIsChild(parent, tabs.toArray(new ViewController[0]));
19
- }
20
- }
@@ -1,78 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.button;
2
-
3
- import android.app.Activity;
4
- import android.graphics.Color;
5
- import android.graphics.drawable.Drawable;
6
-
7
- import com.reactnativenavigation.BaseTest;
8
- import com.reactnativenavigation.options.BackButton;
9
- import com.reactnativenavigation.options.params.ThemeColour;
10
- import com.reactnativenavigation.viewcontrollers.stack.topbar.button.IconResolver;
11
- import com.reactnativenavigation.mocks.BackDrawable;
12
- import com.reactnativenavigation.mocks.ImageLoaderMock;
13
- import com.reactnativenavigation.options.ButtonOptions;
14
- import com.reactnativenavigation.options.params.Colour;
15
- import com.reactnativenavigation.options.params.Text;
16
- import com.reactnativenavigation.react.Constants;
17
- import com.reactnativenavigation.utils.Functions.Func1;
18
- import com.reactnativenavigation.utils.ImageLoader;
19
-
20
- import org.junit.Test;
21
-
22
- import static org.mockito.ArgumentMatchers.any;
23
- import static org.mockito.ArgumentMatchers.eq;
24
- import static org.mockito.Mockito.spy;
25
- import static org.mockito.Mockito.verify;
26
-
27
- public class NavigationIconResolverTest extends BaseTest {
28
- private static final String ICON_URI = "someIconUri";
29
- private IconResolver uut;
30
- private ImageLoader imageLoader;
31
- private Activity context;
32
-
33
- @Override
34
- public void beforeEach() {
35
- imageLoader = ImageLoaderMock.mock();
36
- context = newActivity();
37
- uut = new IconResolver(context, imageLoader);
38
- }
39
-
40
- @Test
41
- public void create_iconButton() {
42
- @SuppressWarnings("Convert2Lambda") Func1<Drawable> onSuccess = spy(new Func1<Drawable>() {
43
- @Override
44
- public void run(Drawable icon) {
45
-
46
- }
47
- });
48
- uut.resolve(iconButton(), onSuccess);
49
- verify(imageLoader).loadIcon(eq(context), eq(ICON_URI), any());
50
- verify(onSuccess).run(any(Drawable.class));
51
- }
52
-
53
- @Test
54
- public void create_backButton() {
55
- @SuppressWarnings("Convert2Lambda") Func1<Drawable> onSuccess = spy(new Func1<Drawable>() {
56
- @Override
57
- public void run(Drawable param) {
58
-
59
- }
60
- });
61
- uut.resolve(backButton(), onSuccess);
62
- verify(onSuccess).run(any(BackDrawable.class));
63
- }
64
-
65
- private ButtonOptions iconButton() {
66
- ButtonOptions button = new ButtonOptions();
67
- button.id = "iconBtnId";
68
- button.icon = new Text(ICON_URI);
69
- button.color = new ThemeColour(new Colour(Color.RED));
70
- return button;
71
- }
72
-
73
- private BackButton backButton() {
74
- BackButton button = BackButton.parse(null, null);
75
- button.id = Constants.BACK_BUTTON_ID;
76
- return button;
77
- }
78
- }
@@ -1,80 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.child;
2
-
3
- import com.reactnativenavigation.BaseTest;
4
- import com.reactnativenavigation.mocks.SimpleViewController;
5
- import com.reactnativenavigation.options.Options;
6
- import com.reactnativenavigation.viewcontrollers.viewcontroller.Presenter;
7
- import com.reactnativenavigation.viewcontrollers.parent.ParentController;
8
-
9
- import org.junit.Test;
10
- import org.mockito.Mockito;
11
-
12
- import static org.mockito.ArgumentMatchers.any;
13
- import static org.mockito.Mockito.spy;
14
- import static org.mockito.Mockito.times;
15
- import static org.mockito.Mockito.verify;
16
-
17
- public class ChildControllerTest extends BaseTest {
18
-
19
- private ChildController<?> uut;
20
- private ChildControllersRegistry childRegistry;
21
- private Presenter presenter;
22
- private Options resolvedOptions = new Options();
23
-
24
- @Override
25
- public void beforeEach() {
26
- childRegistry = spy(new ChildControllersRegistry());
27
- presenter = Mockito.mock(Presenter.class);
28
- uut = new SimpleViewController(newActivity(), childRegistry, "childId", presenter, new Options()) {
29
- @Override
30
- public Options resolveCurrentOptions() {
31
- return resolvedOptions;
32
- }
33
- };
34
- ParentController<?> parent = Mockito.mock(ParentController.class);
35
- Mockito.when(parent.resolveChildOptions(uut)).thenReturn(Options.EMPTY);
36
- uut.setParentController(parent);
37
- }
38
-
39
- @Test
40
- public void onViewAppeared() {
41
- uut.onViewWillAppear();
42
- verify(childRegistry, times(1)).onViewAppeared(uut);
43
- }
44
-
45
- @Test
46
- public void onViewDisappear() {
47
- uut.onViewWillAppear();
48
-
49
- uut.onViewDisappear();
50
- verify(childRegistry, times(1)).onViewDisappear(uut);
51
- }
52
-
53
- @Test
54
- public void mergeOptions() {
55
- newActivity().setContentView(uut.getView());
56
-
57
- Options options = new Options();
58
- uut.mergeOptions(options);
59
- verify(presenter).mergeOptions(uut, options);
60
- }
61
-
62
- @Test
63
- public void mergeOptions_emptyOptionsAreIgnored() {
64
- uut.mergeOptions(Options.EMPTY);
65
- verify(presenter, times(0)).mergeOptions(any(), any());
66
- }
67
-
68
- @Test
69
- public void mergeOptions_mergeWithParentViewController() {
70
- Options options = new Options();
71
- uut.mergeOptions(options);
72
- verify(uut.getParentController()).mergeChildOptions(options, uut);
73
- }
74
-
75
- @Test
76
- public void destroy() {
77
- uut.destroy();
78
- verify(childRegistry).onChildDestroyed(uut);
79
- }
80
- }
@@ -1,56 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.child;
2
-
3
- import android.app.Activity;
4
-
5
- import com.reactnativenavigation.BaseTest;
6
- import com.reactnativenavigation.mocks.SimpleViewController;
7
- import com.reactnativenavigation.options.Options;
8
-
9
- import org.junit.Test;
10
-
11
- import static org.assertj.core.api.Java6Assertions.assertThat;
12
- import static org.mockito.Mockito.spy;
13
- import static org.mockito.Mockito.times;
14
- import static org.mockito.Mockito.verify;
15
-
16
- public class ChildControllersRegistryTest extends BaseTest {
17
- private ChildControllersRegistry uut;
18
- private ChildController<?> child1;
19
- private ChildController<?> child2;
20
-
21
- @Override
22
- public void beforeEach() {
23
- Activity activity = newActivity();
24
- uut = new ChildControllersRegistry();
25
- child1 = spy(new SimpleViewController(activity, uut, "child1", new Options()));
26
- child2 = spy(new SimpleViewController(activity, uut, "child2", new Options()));
27
- }
28
-
29
- @Test
30
- public void onViewAppeared() {
31
- child1.onViewWillAppear();
32
- verify(child1, times(0)).onViewBroughtToFront();
33
- assertThat(uut.size()).isOne();
34
- }
35
-
36
- @Test
37
- public void onViewDisappear() {
38
- child1.onViewWillAppear();
39
- child2.onViewWillAppear();
40
- assertThat(uut.size()).isEqualTo(2);
41
- child2.onViewDisappear();
42
- verify(child1, times(1)).onViewBroughtToFront();
43
- assertThat(uut.size()).isOne();
44
- }
45
-
46
- @Test
47
- public void onChildDestroyed() {
48
- child1.destroy();
49
- assertThat(uut.size()).isEqualTo(0);
50
- }
51
-
52
- @Test
53
- public void onViewDisappear_doesNotCrashIfNoViewsHaveAppeared() {
54
- uut.onViewDisappear(child1);
55
- }
56
- }