react-native-navigation 7.24.0 → 7.24.3-snapshot.492

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 (113) hide show
  1. package/lib/Mock/Components/ComponentScreen.tsx +1 -1
  2. package/lib/Mock/Components/NavigationButton.tsx +1 -1
  3. package/lib/Mock/Components/TopBar.tsx +6 -2
  4. package/lib/android/app/build.gradle +12 -9
  5. package/lib/android/app/src/main/java/com/reactnativenavigation/react/ReactView.java +13 -9
  6. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/SystemUiUtils.kt +3 -2
  7. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +1 -0
  8. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +2 -0
  9. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenter.java +4 -6
  10. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +2 -4
  11. package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabs.java +6 -0
  12. package/lib/dist/Mock/Components/ComponentScreen.js +2 -2
  13. package/lib/dist/Mock/Components/NavigationButton.d.ts +1 -1
  14. package/lib/dist/Mock/Components/NavigationButton.js +3 -3
  15. package/lib/dist/Mock/Components/TopBar.d.ts +1 -2
  16. package/lib/dist/Mock/Components/TopBar.js +3 -3
  17. package/lib/ios/RNNComponentRootView.m +0 -14
  18. package/package.json +1 -1
  19. package/.buildkite/pipeline.yml +0 -59
  20. package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +0 -178
  21. package/lib/android/app/src/test/java/com/reactnativenavigation/EnvironmentTest.java +0 -43
  22. package/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java +0 -23
  23. package/lib/android/app/src/test/java/com/reactnativenavigation/TestApplication.java +0 -35
  24. package/lib/android/app/src/test/java/com/reactnativenavigation/TestUtils.java +0 -62
  25. package/lib/android/app/src/test/java/com/reactnativenavigation/fakes/IconResolverFake.kt +0 -8
  26. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/BackDrawable.java +0 -30
  27. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/ImageLoaderMock.kt +0 -49
  28. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/Mocks.kt +0 -18
  29. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleComponentViewController.java +0 -15
  30. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleOverlay.java +0 -54
  31. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleViewController.java +0 -113
  32. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentLayout.java +0 -79
  33. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentViewCreator.java +0 -18
  34. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestReactView.java +0 -71
  35. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarButtonCreatorMock.java +0 -34
  36. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarReactViewCreatorMock.java +0 -20
  37. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TopBarBackgroundViewCreatorMock.java +0 -20
  38. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TypefaceLoaderMock.kt +0 -21
  39. package/lib/android/app/src/test/java/com/reactnativenavigation/options/LayoutNodeParserTest.java +0 -51
  40. package/lib/android/app/src/test/java/com/reactnativenavigation/options/OptionsTest.java +0 -315
  41. package/lib/android/app/src/test/java/com/reactnativenavigation/options/OrientationOptionsTest.java +0 -81
  42. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TopBarButtonsTest.kt +0 -95
  43. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TransitionAnimationOptionsTest.kt +0 -122
  44. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/BoolParserTest.java +0 -28
  45. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/ColorParseTest.java +0 -50
  46. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/JSONParserTest.java +0 -64
  47. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/PresenterTest.java +0 -56
  48. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/RenderCheckerTest.java +0 -59
  49. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/SideMenuPresenterTest.java +0 -35
  50. package/lib/android/app/src/test/java/com/reactnativenavigation/react/NavigationModuleTest.java +0 -102
  51. package/lib/android/app/src/test/java/com/reactnativenavigation/react/ReloadListenerTest.java +0 -24
  52. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/AnimationHelper.kt +0 -33
  53. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonPresenterTest.java +0 -241
  54. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonSpanTest.java +0 -57
  55. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/CompatUtilsTest.java +0 -17
  56. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/LayoutFactoryTest.java +0 -78
  57. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/MotionEventTest.kt +0 -47
  58. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/NativeCommandListenerTest.java +0 -60
  59. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/OptionHelper.java +0 -16
  60. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ReflectionUtilsTest.java +0 -26
  61. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/StringUtilsTest.java +0 -19
  62. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleAndButtonsMeasurerTest.kt +0 -357
  63. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleBarHelper.java +0 -54
  64. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiThreadTest.java +0 -29
  65. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiUtilsTest.java +0 -22
  66. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ViewHelper.java +0 -9
  67. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/OptionsApplyingTest.java +0 -149
  68. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenterTest.java +0 -206
  69. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAttacherTest.java +0 -62
  70. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt +0 -572
  71. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsPresenterTest.kt +0 -173
  72. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AfterInitialTabTest.java +0 -38
  73. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachModeTest.java +0 -86
  74. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/OnSwitchToTabTest.java +0 -31
  75. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/TogetherTest.java +0 -20
  76. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/button/NavigationIconResolverTest.java +0 -78
  77. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +0 -80
  78. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistryTest.java +0 -56
  79. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewControllerTest.java +0 -191
  80. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/ExternalComponentViewControllerTest.java +0 -97
  81. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/FragmentCreatorMock.java +0 -34
  82. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/SomeFragment.java +0 -8
  83. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/fakes/FakeParentController.kt +0 -33
  84. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorMock.java +0 -40
  85. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorTest.kt +0 -213
  86. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +0 -319
  87. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +0 -368
  88. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +0 -898
  89. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +0 -254
  90. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManagerTest.java +0 -108
  91. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +0 -299
  92. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +0 -446
  93. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/BackButtonHelperTest.java +0 -77
  94. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/FloatingActionButtonTest.java +0 -154
  95. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/IdStackTest.java +0 -114
  96. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +0 -241
  97. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +0 -1165
  98. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +0 -1081
  99. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarButtonControllerTest.java +0 -61
  100. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarReactViewControllerTest.java +0 -43
  101. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarButtonControllerTest.java +0 -120
  102. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +0 -432
  103. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsViewControllerTest.java +0 -247
  104. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerTest.java +0 -337
  105. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegateTest.java +0 -68
  106. package/lib/android/app/src/test/java/com/reactnativenavigation/views/OverlayTouchDelegateTest.java +0 -60
  107. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TitleAndButtonsContainerTest.kt +0 -477
  108. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TopBarTest.java +0 -82
  109. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/BaseViewAnimatorTest.kt +0 -109
  110. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/DefaultViewAnimatorCreatorFake.kt +0 -36
  111. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainerTest.kt +0 -101
  112. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsTest.kt +0 -40
  113. package/lib/android/app/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker +0 -1
@@ -1,247 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.toptabs;
2
-
3
- import android.app.Activity;
4
- import android.view.ViewGroup;
5
-
6
- import com.reactnativenavigation.BaseTest;
7
- import com.reactnativenavigation.TestUtils;
8
- import com.reactnativenavigation.mocks.SimpleViewController;
9
- import com.reactnativenavigation.mocks.TestComponentViewCreator;
10
- import com.reactnativenavigation.mocks.TestReactView;
11
- import com.reactnativenavigation.options.Options;
12
- import com.reactnativenavigation.options.params.Bool;
13
- import com.reactnativenavigation.options.params.Text;
14
- import com.reactnativenavigation.viewcontrollers.component.ComponentPresenter;
15
- import com.reactnativenavigation.viewcontrollers.viewcontroller.Presenter;
16
- import com.reactnativenavigation.react.events.ComponentType;
17
- import com.reactnativenavigation.react.CommandListenerAdapter;
18
- import com.reactnativenavigation.utils.ViewHelper;
19
- import com.reactnativenavigation.viewcontrollers.viewcontroller.IReactView;
20
- import com.reactnativenavigation.viewcontrollers.child.ChildControllersRegistry;
21
- import com.reactnativenavigation.viewcontrollers.component.ComponentViewController;
22
- import com.reactnativenavigation.viewcontrollers.stack.StackController;
23
- import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
24
- import com.reactnativenavigation.views.toptabs.TopTabsLayoutCreator;
25
- import com.reactnativenavigation.views.toptabs.TopTabsViewPager;
26
-
27
- import org.junit.Test;
28
- import org.mockito.Mockito;
29
-
30
- import java.util.ArrayList;
31
- import java.util.List;
32
-
33
- import androidx.annotation.NonNull;
34
-
35
- import static org.assertj.core.api.Java6Assertions.assertThat;
36
- import static org.mockito.ArgumentMatchers.any;
37
- import static org.mockito.ArgumentMatchers.eq;
38
- import static org.mockito.Mockito.spy;
39
- import static org.mockito.Mockito.times;
40
- import static org.mockito.Mockito.verify;
41
-
42
- public class TopTabsViewControllerTest extends BaseTest {
43
- private static final int SIZE = 2;
44
-
45
- private StackController stack;
46
- private TopTabsController uut;
47
- private List<ViewController<?>> tabControllers = new ArrayList<>(SIZE);
48
- private final Options options = new Options();
49
- private TopTabsViewPager topTabsLayout;
50
- private Activity activity;
51
- private ChildControllersRegistry childRegistry;
52
-
53
- @Override
54
- public void beforeEach() {
55
- super.beforeEach();
56
-
57
- activity = newActivity();
58
- childRegistry = new ChildControllersRegistry();
59
- List<Options> tabOptions = createOptions();
60
- tabControllers = createTabsControllers(activity, tabOptions);
61
-
62
- topTabsLayout = spy(new TopTabsViewPager(activity, tabControllers, new TopTabsAdapter(tabControllers)));
63
- TopTabsLayoutCreator layoutCreator = Mockito.mock(TopTabsLayoutCreator.class);
64
- Mockito.when(layoutCreator.create()).thenReturn(topTabsLayout);
65
- Presenter presenter = new Presenter(activity, new Options());
66
- options.topBar.buttons.back.visible = new Bool(false);
67
- uut = spy(new TopTabsController(activity, childRegistry, "componentId", tabControllers, layoutCreator, options, presenter));
68
- tabControllers.forEach(viewController -> viewController.setParentController(uut));
69
-
70
- stack = spy(TestUtils.newStackController(activity).build());
71
- stack.ensureViewIsCreated();
72
- }
73
-
74
- @NonNull
75
- private ArrayList<Options> createOptions() {
76
- ArrayList<Options> result = new ArrayList<>();
77
- for (int i = 0; i < SIZE; i++) {
78
- final Options options = new Options();
79
- options.topTabOptions.title = new Text("Tab " + i);
80
- options.topBar.title.text = new Text(createTabTopBarTitle(i));
81
- result.add(options);
82
- }
83
- return result;
84
- }
85
-
86
- private List<ViewController<?>> createTabsControllers(Activity activity, List<Options> tabOptions) {
87
- List<ViewController<?>> tabControllers = new ArrayList<>(SIZE);
88
- for (int i = 0; i < SIZE; i++) {
89
- ComponentViewController viewController = new ComponentViewController(
90
- activity,
91
- childRegistry,
92
- "idTab" + i,
93
- "theComponentName",
94
- new TestComponentViewCreator(),
95
- tabOptions.get(i),
96
- new Presenter(activity, new Options()),
97
- new ComponentPresenter(Options.EMPTY)
98
- );
99
- tabControllers.add(spy(viewController));
100
- }
101
- return tabControllers;
102
- }
103
-
104
- @Test
105
- public void createsViewFromComponentViewCreator() {
106
- uut.ensureViewIsCreated();
107
- for (int i = 0; i < SIZE; i++) {
108
- verify(tabControllers.get(i), times(1)).createView();
109
- }
110
- }
111
-
112
- @Test
113
- public void componentViewDestroyedOnDestroy() {
114
- uut.ensureViewIsCreated();
115
- TopTabsViewPager topTabs = uut.getView();
116
- for (int i = 0; i < SIZE; i++) {
117
- verify(tab(topTabs, i), times(0)).destroy();
118
- }
119
- uut.destroy();
120
- for (ViewController<?> tabController : tabControllers) {
121
- verify(tabController, times(1)).destroy();
122
- }
123
- }
124
-
125
- @Test
126
- public void lifecycleMethodsSentWhenSelectedTabChanges() {
127
- stack.ensureViewIsCreated();
128
- uut.ensureViewIsCreated();
129
- tabControllers.get(0).ensureViewIsCreated();
130
- tabControllers.get(1).ensureViewIsCreated();
131
-
132
- TestReactView initialTab = getActualTabView(0);
133
- TestReactView selectedTab = getActualTabView(1);
134
-
135
- uut.switchToTab(1);
136
- verify(initialTab, times(1)).sendComponentStop(ComponentType.Component);
137
- verify(selectedTab, times(1)).sendComponentWillStart(ComponentType.Component);
138
- verify(selectedTab, times(1)).sendComponentStart(ComponentType.Component);
139
- verify(selectedTab, times(0)).sendComponentStop(ComponentType.Component);
140
- }
141
-
142
- @Test
143
- public void lifecycleMethodsSentWhenSelectedPreviouslySelectedTab() {
144
- stack.ensureViewIsCreated();
145
- uut.ensureViewIsCreated();
146
- uut.onViewDidAppear();
147
- uut.switchToTab(1);
148
- uut.switchToTab(0);
149
-
150
- verify(getActualTabView(0), times(1)).sendComponentStop(ComponentType.Component);
151
- verify(getActualTabView(0), times(2)).sendComponentWillStart(ComponentType.Component);
152
- verify(getActualTabView(0), times(2)).sendComponentStart(ComponentType.Component);
153
- verify(getActualTabView(1), times(1)).sendComponentStart(ComponentType.Component);
154
- verify(getActualTabView(1), times(1)).sendComponentStop(ComponentType.Component);
155
- }
156
-
157
- @Test
158
- public void setOptionsOfInitialTab() {
159
- stack.ensureViewIsCreated();
160
- uut.ensureViewIsCreated();
161
- uut.onViewWillAppear();
162
- verify(tabControllers.get(0), times(1)).onViewWillAppear();
163
- verify(tabControllers.get(1), times(0)).onViewWillAppear();
164
-
165
- ViewController<?> comp = tabControllers.get(0);
166
- verify(uut, times(1)).applyChildOptions(any(Options.class), eq(comp));
167
- }
168
-
169
- @Test
170
- public void setOptionsWhenTabChanges() {
171
- stack.ensureViewIsCreated();
172
- uut.ensureViewIsCreated();
173
- tabControllers.get(0).ensureViewIsCreated();
174
- tabControllers.get(1).ensureViewIsCreated();
175
-
176
- uut.onViewWillAppear();
177
- ViewController<?> currentTab = tab(0);
178
- verify(uut, times(1)).applyChildOptions(any(Options.class), eq(currentTab));
179
- assertThat(uut.options.topBar.title.text.get()).isEqualTo(createTabTopBarTitle(0));
180
-
181
- uut.switchToTab(1);
182
- currentTab = tab(1);
183
- verify(uut, times(1)).applyChildOptions(any(Options.class), eq(currentTab));
184
- assertThat(uut.options.topBar.title.text.get()).isEqualTo(createTabTopBarTitle(1));
185
-
186
- uut.switchToTab(0);
187
- currentTab = tab(0);
188
- verify(uut, times(2)).applyChildOptions(any(Options.class), eq(currentTab));
189
- assertThat(uut.options.topBar.title.text.get()).isEqualTo(createTabTopBarTitle(0));
190
- }
191
-
192
- private TestReactView getActualTabView(int index) {
193
- return (TestReactView) tabControllers.get(index).getView().getChildAt(0);
194
- }
195
-
196
- @Test
197
- public void appliesOptionsOnLayoutWhenVisible() {
198
- tabControllers.get(0).ensureViewIsCreated();
199
- stack.ensureViewIsCreated();
200
- uut.ensureViewIsCreated();
201
-
202
- uut.onViewWillAppear();
203
-
204
- verify(topTabsLayout, times(1)).applyOptions(any(Options.class));
205
- }
206
-
207
- @Test
208
- public void applyOptions_tabsAreRemovedAfterViewDisappears() {
209
- StackController stackController = TestUtils.newStackController(activity).build();
210
- stackController.ensureViewIsCreated();
211
- ViewController<?> first = new SimpleViewController(activity, childRegistry, "first", Options.EMPTY);
212
- disablePushAnimation(first, uut);
213
- stackController.push(first, new CommandListenerAdapter());
214
- stackController.push(uut, new CommandListenerAdapter());
215
-
216
- uut.onViewWillAppear();
217
-
218
- assertThat(ViewHelper.isVisible(stackController.getTopBar().getTopTabs())).isTrue();
219
- disablePopAnimation(uut);
220
- stackController.pop(Options.EMPTY, new CommandListenerAdapter());
221
-
222
- first.onViewWillAppear();
223
-
224
- assertThat(ViewHelper.isVisible(stackController.getTopBar().getTopTabs())).isFalse();
225
- }
226
-
227
- @Test
228
- public void onNavigationButtonPressInvokedOnCurrentTab() {
229
- uut.ensureViewIsCreated();
230
- uut.onViewWillAppear();
231
- uut.switchToTab(1);
232
- uut.sendOnNavigationButtonPressed("btn1");
233
- verify(tabControllers.get(1), times(1)).sendOnNavigationButtonPressed("btn1");
234
- }
235
-
236
- private IReactView tab(TopTabsViewPager topTabs, final int index) {
237
- return (IReactView) ((ViewGroup) topTabs.getChildAt(index)).getChildAt(0);
238
- }
239
-
240
- private String createTabTopBarTitle(int i) {
241
- return "Title " + i;
242
- }
243
-
244
- private ViewController<?> tab(int index) {
245
- return tabControllers.get(index);
246
- }
247
- }
@@ -1,337 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.viewcontroller;
2
-
3
- import android.app.Activity;
4
- import android.view.View;
5
- import android.view.ViewGroup;
6
- import android.view.ViewParent;
7
- import android.widget.FrameLayout;
8
- import android.widget.LinearLayout;
9
-
10
- import androidx.coordinatorlayout.widget.CoordinatorLayout;
11
-
12
- import com.reactnativenavigation.BaseTest;
13
- import com.reactnativenavigation.TestUtils;
14
- import com.reactnativenavigation.mocks.SimpleViewController;
15
- import com.reactnativenavigation.options.Options;
16
- import com.reactnativenavigation.options.params.Bool;
17
- import com.reactnativenavigation.options.params.NullBool;
18
- import com.reactnativenavigation.react.CommandListenerAdapter;
19
- import com.reactnativenavigation.utils.Functions;
20
- import com.reactnativenavigation.viewcontrollers.child.ChildControllersRegistry;
21
- import com.reactnativenavigation.viewcontrollers.parent.ParentController;
22
- import com.reactnativenavigation.viewcontrollers.stack.StackController;
23
- import com.reactnativenavigation.viewcontrollers.viewcontroller.overlay.ViewControllerOverlay;
24
- import com.reactnativenavigation.views.component.Component;
25
-
26
- import org.assertj.android.api.Assertions;
27
- import org.junit.Test;
28
- import org.mockito.Mockito;
29
- import org.robolectric.Shadows;
30
-
31
- import java.lang.reflect.Field;
32
-
33
- import static org.assertj.core.api.Java6Assertions.assertThat;
34
- import static org.mockito.ArgumentMatchers.any;
35
- import static org.mockito.Mockito.mock;
36
- import static org.mockito.Mockito.spy;
37
- import static org.mockito.Mockito.times;
38
- import static org.mockito.Mockito.verify;
39
- import static org.mockito.Mockito.withSettings;
40
-
41
- public class ViewControllerTest extends BaseTest {
42
-
43
- private ViewController uut;
44
- private Activity activity;
45
- private ChildControllersRegistry childRegistry;
46
- private YellowBoxDelegate yellowBoxDelegate;
47
-
48
- @Override
49
- public void beforeEach() {
50
- super.beforeEach();
51
- yellowBoxDelegate = Mockito.mock(YellowBoxDelegate.class);
52
- activity = newActivity();
53
- childRegistry = new ChildControllersRegistry();
54
- uut = new SimpleViewController(activity, childRegistry, "uut", new Options());
55
- final ParentController<?> parent = mock(ParentController.class);
56
- uut.setParentController(parent);
57
- Mockito.when(parent.resolveChildOptions(any())).thenReturn(Options.EMPTY);
58
- }
59
-
60
- @Test
61
- public void holdsAView() {
62
- assertThat(uut.getView()).isNotNull().isInstanceOf(View.class);
63
- }
64
-
65
- @Test
66
- public void holdsARefToActivity() {
67
- assertThat(uut.getActivity()).isNotNull().isEqualTo(activity);
68
- }
69
-
70
- @Test
71
- public void canOverrideViewCreation() {
72
- final FrameLayout otherView = new FrameLayout(activity);
73
- yellowBoxDelegate = spy(new YellowBoxDelegate(activity));
74
- ViewController myController = new ViewController(activity, "vc", yellowBoxDelegate, new Options(), new ViewControllerOverlay(activity)) {
75
- @Override
76
- public FrameLayout createView() {
77
- return otherView;
78
- }
79
-
80
- @Override
81
- public void sendOnNavigationButtonPressed(String buttonId) {
82
-
83
- }
84
-
85
- @Override
86
- public String getCurrentComponentName() { return null; }
87
- };
88
- assertThat(myController.getView()).isEqualTo(otherView);
89
- }
90
-
91
- @SuppressWarnings("ConstantConditions")
92
- @Test
93
- public void holdsAReferenceToStackControllerOrNull() {
94
- uut.setParentController(null);
95
-
96
- assertThat(uut.getParentController()).isNull();
97
- StackController nav = TestUtils.newStackController(activity).build();
98
- nav.ensureViewIsCreated();
99
- nav.push(uut, new CommandListenerAdapter());
100
- assertThat(uut.getParentController()).isEqualTo(nav);
101
- }
102
-
103
- @Test
104
- public void handleBackDefaultFalse() {
105
- assertThat(uut.handleBack(new CommandListenerAdapter())).isFalse();
106
- }
107
-
108
- @Test
109
- public void holdsId() {
110
- assertThat(uut.getId()).isEqualTo("uut");
111
- }
112
-
113
- @Test
114
- public void isSameId() {
115
- assertThat(uut.isSameId("")).isFalse();
116
- assertThat(uut.isSameId(null)).isFalse();
117
- assertThat(uut.isSameId("uut")).isTrue();
118
- }
119
-
120
- @Test
121
- public void findControllerById_SelfOrNull() {
122
- assertThat(uut.findController("456")).isNull();
123
- assertThat(uut.findController("uut")).isEqualTo(uut);
124
- }
125
-
126
- @Test
127
- public void runOnPreDraw() {
128
- Functions.Func1<View> task = Mockito.mock(Functions.Func1.class);
129
- uut.runOnPreDraw(task);
130
- dispatchPreDraw(uut.getView());
131
- verify(task).run(uut.getView());
132
- }
133
-
134
- @Test
135
- public void runOnPreDraw_doesNotInvokeTaskIfControllerIsDestroyed() {
136
- Functions.Func1<View> task = Mockito.mock(Functions.Func1.class);
137
- uut.runOnPreDraw(task);
138
- View view = uut.getView();
139
- uut.destroy();
140
- dispatchPreDraw(view);
141
- verify(task, times(1)).run(view);
142
- }
143
-
144
- @Test
145
- public void onChildViewAdded_delegatesToYellowBoxDelegate() {
146
- View child = new View(activity);
147
- ViewGroup view = new FrameLayout(activity);
148
- ViewController vc = new ViewController(activity, "", yellowBoxDelegate, new Options(), new ViewControllerOverlay(activity)) {
149
- @Override
150
- public ViewGroup createView() {
151
- return view;
152
- }
153
-
154
- @Override
155
- public void sendOnNavigationButtonPressed(String buttonId) {
156
-
157
- }
158
-
159
- @Override
160
- public String getCurrentComponentName() { return null; }
161
- };
162
- vc.onChildViewAdded(view, child);
163
- verify(yellowBoxDelegate).onChildViewAdded(view, child);
164
- }
165
-
166
- @Test
167
- public void onAppear_WhenShown() {
168
- ViewController spy = spy(uut);
169
- spy.getView().getViewTreeObserver().dispatchOnGlobalLayout();
170
- Assertions.assertThat(spy.getView()).isNotShown();
171
- verify(spy, times(0)).onViewWillAppear();
172
-
173
- Shadows.shadowOf(spy.getView()).setMyParent(mock(ViewParent.class));
174
- spy.getView().getViewTreeObserver().dispatchOnGlobalLayout();
175
- Assertions.assertThat(spy.getView()).isShown();
176
-
177
- verify(spy, times(1)).onViewWillAppear();
178
- }
179
-
180
- @Test
181
- public void onAppear_CalledAtMostOnce() {
182
- ViewController spy = spy(uut);
183
- Shadows.shadowOf(spy.getView()).setMyParent(mock(ViewParent.class));
184
- Assertions.assertThat(spy.getView()).isShown();
185
- spy.getView().getViewTreeObserver().dispatchOnGlobalLayout();
186
- spy.getView().getViewTreeObserver().dispatchOnGlobalLayout();
187
- spy.getView().getViewTreeObserver().dispatchOnGlobalLayout();
188
-
189
- verify(spy, times(1)).onViewWillAppear();
190
- }
191
-
192
- @Test
193
- public void isViewShown_doesNotCreateView() {
194
- assertThat(uut.isViewShown()).isFalse();
195
- assertThat(uut.view).isNull();
196
- }
197
-
198
- @Test
199
- public void onDisappear_WhenNotShown_AfterOnAppearWasCalled() {
200
- ViewController spy = spy(uut);
201
- Shadows.shadowOf(spy.getView()).setMyParent(mock(ViewParent.class));
202
- Assertions.assertThat(spy.getView()).isShown();
203
- spy.getView().getViewTreeObserver().dispatchOnGlobalLayout();
204
- verify(spy, times(1)).onViewWillAppear();
205
- verify(spy, times(0)).onViewDisappear();
206
-
207
- spy.getView().setVisibility(View.GONE);
208
- spy.getView().getViewTreeObserver().dispatchOnGlobalLayout();
209
- Assertions.assertThat(spy.getView()).isNotShown();
210
- verify(spy, times(1)).onViewDisappear();
211
- }
212
-
213
- @Test
214
- public void onDisappear_CalledAtMostOnce() {
215
- ViewController spy = spy(uut);
216
- Shadows.shadowOf(spy.getView()).setMyParent(mock(ViewParent.class));
217
- Assertions.assertThat(spy.getView()).isShown();
218
- spy.getView().getViewTreeObserver().dispatchOnGlobalLayout();
219
- spy.getView().setVisibility(View.GONE);
220
- spy.getView().getViewTreeObserver().dispatchOnGlobalLayout();
221
- spy.getView().getViewTreeObserver().dispatchOnGlobalLayout();
222
- spy.getView().getViewTreeObserver().dispatchOnGlobalLayout();
223
- verify(spy, times(1)).onViewDisappear();
224
- }
225
-
226
- @Test
227
- public void onDestroy_RemovesGlobalLayoutListener() throws Exception {
228
- new SimpleViewController(activity, childRegistry, "ensureNotNull", new Options()).destroy();
229
-
230
- ViewController spy = spy(uut);
231
- View view = spy.getView();
232
- Shadows.shadowOf(view).setMyParent(mock(ViewParent.class));
233
-
234
- spy.destroy();
235
-
236
- Assertions.assertThat(view).isShown();
237
- view.getViewTreeObserver().dispatchOnGlobalLayout();
238
- verify(spy, times(0)).onViewWillAppear();
239
- verify(spy, times(0)).onViewDisappear();
240
-
241
- Field field = ViewController.class.getDeclaredField("view");
242
- field.setAccessible(true);
243
- assertThat(field.get(spy)).isNull();
244
- }
245
-
246
- @Test
247
- public void onDestroy_CallsOnDisappearIfNeeded() {
248
- ViewController spy = spy(uut);
249
- Shadows.shadowOf(spy.getView()).setMyParent(mock(ViewParent.class));
250
- Assertions.assertThat(spy.getView()).isShown();
251
- spy.getView().getViewTreeObserver().dispatchOnGlobalLayout();
252
- verify(spy, times(1)).onViewWillAppear();
253
-
254
- spy.destroy();
255
-
256
- verify(spy, times(1)).onViewDisappear();
257
- }
258
-
259
- @Test
260
- public void onDestroy_destroysViewEvenIfHidden() {
261
- final SimpleViewController.SimpleView[] spy = new SimpleViewController.SimpleView[1];
262
- ViewController uut = new SimpleViewController(activity, childRegistry, "uut", new Options()) {
263
- @Override
264
- public SimpleView createView() {
265
- SimpleView view = spy(super.createView());
266
- spy[0] = view;
267
- return view;
268
- }
269
- };
270
- assertThat(uut.isViewShown()).isFalse();
271
- uut.destroy();
272
- verify(spy[0], times(1)).destroy();
273
- }
274
-
275
- @Test
276
- public void onDestroy_RemovesSelfFromParentIfExists() {
277
- LinearLayout parent = new LinearLayout(activity);
278
- parent.addView(uut.getView());
279
-
280
- uut.destroy();
281
- assertThat(parent.getChildCount()).withFailMessage("expected not to have children").isZero();
282
- }
283
-
284
- @Test
285
- public void onDestroy_shouldKeepViewIdsStable() {
286
- LinearLayout parent = new LinearLayout(activity);
287
- ViewGroup view = uut.getView();
288
- view.setId(10);
289
- parent.addView(view);
290
-
291
- uut.destroy();
292
- assertThat(view.getId()).isEqualTo(10);
293
- }
294
-
295
- @Test
296
- public void ensureViewIsCreated() {
297
- ViewController spy = spy(uut);
298
- verify(spy, times(0)).getView();
299
- spy.ensureViewIsCreated();
300
- verify(spy, times(1)).getView();
301
- }
302
-
303
- @Test
304
- public void isRendered_falseIfViewIsNotCreated() {
305
- uut.setWaitForRender(new Bool(true));
306
- assertThat(uut.isRendered()).isFalse();
307
- }
308
-
309
- @Test
310
- public void isRendered_delegatesToView() {
311
- uut.setWaitForRender(new Bool(true));
312
- uut.view = mock(ViewGroup.class, withSettings().extraInterfaces(Component.class));
313
- uut.isRendered();
314
- verify((Component) uut.view).isRendered();
315
- }
316
-
317
- @Test
318
- public void isRendered_returnsTrueForEveryViewByDefault() {
319
- uut.setWaitForRender(new NullBool());
320
- uut.view = mock(ViewGroup.class);
321
- assertThat(uut.isRendered()).isTrue();
322
- }
323
-
324
- @Test
325
- public void getTopInset_noParent() {
326
- uut.setParentController(null);
327
- assertThat(uut.getTopInset()).isEqualTo(63);
328
- }
329
-
330
- @Test
331
- public void onMeasureChild() {
332
- ViewController spy = spy(uut);
333
- spy.onMeasureChild(mock(CoordinatorLayout.class), spy.getView(), -1, -1, -1, -1);
334
- verify(spy).applyTopInset();
335
- }
336
- }
337
-
@@ -1,68 +0,0 @@
1
- package com.reactnativenavigation.viewcontrollers.viewcontroller;
2
-
3
- import android.app.Activity;
4
- import android.view.View;
5
- import android.view.ViewGroup;
6
- import android.widget.FrameLayout;
7
-
8
- import com.reactnativenavigation.BaseTest;
9
-
10
- import org.junit.Test;
11
- import org.mockito.Mockito;
12
-
13
- import static org.assertj.core.api.Java6Assertions.assertThat;
14
- import static org.mockito.Mockito.verify;
15
-
16
- public class YellowBoxDelegateTest extends BaseTest {
17
- private YellowBoxDelegate uut;
18
- private YellowBoxHelper yellowBoxHelper;
19
- private View yellowBox;
20
- private ViewGroup parent;
21
-
22
- @Override
23
- public void beforeEach() {
24
- Activity context = newActivity();
25
- yellowBox = new View(context);
26
- parent = new FrameLayout(context);
27
- yellowBoxHelper = Mockito.mock(YellowBoxHelper.class);
28
- uut = new YellowBoxDelegate(context, yellowBoxHelper);
29
- parent.addView(new View(context)); // We assume view at index 0 is not a yellow box
30
- parent.addView(yellowBox);
31
- }
32
-
33
- @Test
34
- public void onYellowBoxAdded_removedFromParent() {
35
- uut.onYellowBoxAdded(parent);
36
- assertThat(yellowBox.getParent()).isNull();
37
- }
38
-
39
- @Test
40
- public void onYellowBoxAdded_storesRefToYellowBoxAndParent() {
41
- uut.onYellowBoxAdded(parent);
42
- assertThat(uut.getYellowBoxes()).contains(yellowBox);
43
- assertThat(uut.getParent()).isEqualTo(parent);
44
- }
45
-
46
- @Test
47
- public void onReactViewDestroy_yellowBoxIsAddedBackToParent() {
48
- uut.onYellowBoxAdded(parent);
49
- uut.destroy();
50
- assertThat(yellowBox.getParent()).isEqualTo(parent);
51
- }
52
-
53
- @Test
54
- public void onChildViewAdded() {
55
- uut.onChildViewAdded(parent, yellowBox);
56
- dispatchPreDraw(yellowBox);
57
- verify(yellowBoxHelper).isYellowBox(parent, yellowBox);
58
- }
59
-
60
- @Test
61
- public void onYellowBoxAdded_notHandledIfDelegateIsDestroyed() {
62
- uut.onYellowBoxAdded(parent);
63
- uut.destroy();
64
-
65
- uut.onYellowBoxAdded(parent);
66
- assertThat(yellowBox.getParent()).isEqualTo(parent);
67
- }
68
- }