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