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.
- package/lib/android/app/build.gradle +12 -9
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/Options.java +2 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/layout/LayoutInsets.kt +44 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/layout/LayoutOptions.kt +71 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/PrimitiveExt.kt +9 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +4 -3
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/navigator/Navigator.java +5 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/Presenter.java +23 -7
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java +12 -3
- package/lib/dist/src/interfaces/Options.d.ts +10 -0
- package/lib/ios/RNNBasePresenter.m +17 -0
- package/lib/ios/RNNBottomTabsController.m +1 -0
- package/lib/ios/RNNBridgeManager.mm +5 -3
- package/lib/ios/RNNComponentViewController.m +5 -0
- package/lib/ios/RNNLayoutOptions.h +2 -1
- package/lib/ios/RNNLayoutOptions.m +4 -0
- package/lib/ios/RNNModalHostViewManagerHandler.h +11 -0
- package/lib/ios/RNNModalHostViewManagerHandler.m +40 -0
- package/lib/ios/RNNModalManager.h +2 -2
- package/lib/ios/RNNModalManager.m +0 -26
- package/lib/ios/RNNStackPresenter.m +1 -0
- package/lib/ios/ReactNativeNavigation.xcodeproj/project.pbxproj +8 -0
- package/lib/src/interfaces/Options.ts +12 -0
- package/package.json +3 -1
- package/.buildkite/pipeline.yml +0 -59
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutOptions.java +0 -48
- package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +0 -178
- package/lib/android/app/src/test/java/com/reactnativenavigation/EnvironmentTest.java +0 -43
- package/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java +0 -23
- package/lib/android/app/src/test/java/com/reactnativenavigation/TestApplication.java +0 -35
- package/lib/android/app/src/test/java/com/reactnativenavigation/TestUtils.java +0 -62
- package/lib/android/app/src/test/java/com/reactnativenavigation/fakes/IconResolverFake.kt +0 -8
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/BackDrawable.java +0 -30
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/ImageLoaderMock.kt +0 -49
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/Mocks.kt +0 -18
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleComponentViewController.java +0 -15
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleOverlay.java +0 -54
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleViewController.java +0 -113
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentLayout.java +0 -79
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentViewCreator.java +0 -18
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestReactView.java +0 -71
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarButtonCreatorMock.java +0 -34
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarReactViewCreatorMock.java +0 -20
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TopBarBackgroundViewCreatorMock.java +0 -20
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TypefaceLoaderMock.kt +0 -21
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/LayoutNodeParserTest.java +0 -51
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/OptionsTest.java +0 -315
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/OrientationOptionsTest.java +0 -81
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/TopBarButtonsTest.kt +0 -95
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/TransitionAnimationOptionsTest.kt +0 -122
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/BoolParserTest.java +0 -28
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/ColorParseTest.java +0 -50
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/JSONParserTest.java +0 -64
- package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/PresenterTest.java +0 -56
- package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/RenderCheckerTest.java +0 -59
- package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/SideMenuPresenterTest.java +0 -35
- package/lib/android/app/src/test/java/com/reactnativenavigation/react/NavigationModuleTest.java +0 -102
- package/lib/android/app/src/test/java/com/reactnativenavigation/react/ReloadListenerTest.java +0 -24
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/AnimationHelper.kt +0 -33
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonPresenterTest.java +0 -241
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonSpanTest.java +0 -57
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/CompatUtilsTest.java +0 -17
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/LayoutFactoryTest.java +0 -78
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/MotionEventTest.kt +0 -47
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/NativeCommandListenerTest.java +0 -60
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/OptionHelper.java +0 -16
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ReflectionUtilsTest.java +0 -26
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/StringUtilsTest.java +0 -19
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/SystemUiUtilsTest.kt +0 -27
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleAndButtonsMeasurerTest.kt +0 -357
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleBarHelper.java +0 -54
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiThreadTest.java +0 -29
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiUtilsTest.java +0 -22
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ViewHelper.java +0 -9
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/OptionsApplyingTest.java +0 -149
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenterTest.java +0 -206
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAttacherTest.java +0 -62
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt +0 -589
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsPresenterTest.kt +0 -173
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AfterInitialTabTest.java +0 -38
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachModeTest.java +0 -86
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/OnSwitchToTabTest.java +0 -31
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/TogetherTest.java +0 -20
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/button/NavigationIconResolverTest.java +0 -78
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +0 -80
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistryTest.java +0 -56
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewControllerTest.java +0 -216
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/ExternalComponentViewControllerTest.java +0 -97
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/FragmentCreatorMock.java +0 -34
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/SomeFragment.java +0 -8
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/fakes/FakeParentController.kt +0 -33
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorMock.java +0 -40
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorTest.kt +0 -213
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +0 -319
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +0 -367
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +0 -898
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +0 -254
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManagerTest.java +0 -108
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +0 -299
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +0 -446
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/BackButtonHelperTest.java +0 -77
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/FloatingActionButtonTest.java +0 -154
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/IdStackTest.java +0 -114
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +0 -241
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +0 -1165
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +0 -1081
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarButtonControllerTest.java +0 -61
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarReactViewControllerTest.java +0 -43
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarButtonControllerTest.java +0 -120
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +0 -432
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsViewControllerTest.java +0 -249
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerTest.java +0 -337
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegateTest.java +0 -68
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/OverlayTouchDelegateTest.java +0 -60
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/TitleAndButtonsContainerTest.kt +0 -477
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/TopBarTest.java +0 -82
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/BaseViewAnimatorTest.kt +0 -109
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/DefaultViewAnimatorCreatorFake.kt +0 -36
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainerTest.kt +0 -101
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsTest.kt +0 -40
- 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
|
-
}
|