react-native-navigation 7.23.1 → 7.24.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 (263) hide show
  1. package/.buildkite/pipeline.yml +51 -11
  2. package/.nvmrc +1 -0
  3. package/Mock.d.ts +1 -0
  4. package/Mock.js +4 -0
  5. package/Mock.ts +1 -1
  6. package/README.md +0 -1
  7. package/jest.config.js +40 -0
  8. package/lib/{src/Mock → Mock}/Application.tsx +0 -0
  9. package/lib/{src/Mock → Mock}/ComponentProps.tsx +0 -0
  10. package/lib/{src/Mock → Mock}/Components/BottomTabs.tsx +0 -0
  11. package/lib/{src/Mock → Mock}/Components/ComponentScreen.tsx +13 -2
  12. package/lib/{src/Mock → Mock}/Components/LayoutComponent.tsx +0 -0
  13. package/lib/{src/Mock → Mock}/Components/Modals.tsx +0 -0
  14. package/lib/{src/Mock → Mock}/Components/NavigationButton.tsx +1 -1
  15. package/lib/{src/Mock → Mock}/Components/Overlays.tsx +0 -0
  16. package/lib/{src/Mock → Mock}/Components/Stack.tsx +0 -0
  17. package/lib/{src/Mock → Mock}/Components/TopBar.tsx +2 -2
  18. package/lib/{src/Mock → Mock}/Layouts/BottomTabsNode.ts +1 -1
  19. package/lib/{src/Mock → Mock}/Layouts/ComponentNode.ts +1 -1
  20. package/lib/{src/Mock → Mock}/Layouts/LayoutNodeFactory.ts +0 -0
  21. package/lib/{src/Mock → Mock}/Layouts/Node.ts +1 -1
  22. package/lib/{src/Mock → Mock}/Layouts/ParentNode.ts +2 -2
  23. package/lib/{src/Mock → Mock}/Layouts/StackNode.ts +0 -0
  24. package/lib/{src/Mock → Mock}/Stores/EventsStore.ts +10 -2
  25. package/lib/{src/Mock → Mock}/Stores/LayoutStore.ts +3 -2
  26. package/lib/{src/Mock → Mock}/connect.ts +0 -0
  27. package/lib/Mock/constants.d.ts +2 -0
  28. package/lib/Mock/constants.js +5 -0
  29. package/lib/{src/Mock → Mock}/constants.ts +0 -0
  30. package/lib/Mock/index.d.ts +3 -0
  31. package/lib/Mock/index.js +14 -0
  32. package/lib/{src/Mock → Mock}/index.ts +0 -0
  33. package/lib/{src/Mock → Mock}/mocks/AppRegistryService.ts +0 -0
  34. package/lib/{src/Mock → Mock}/mocks/NativeCommandsSender.tsx +1 -1
  35. package/lib/{src/Mock → Mock}/mocks/NativeEventsReceiver.ts +7 -4
  36. package/lib/android/app/build.gradle +23 -21
  37. package/lib/android/app/src/main/java/com/reactnativenavigation/options/FontOptions.kt +2 -2
  38. package/lib/android/app/src/main/java/com/reactnativenavigation/options/HardwareBackButtonOptions.kt +35 -2
  39. package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutFactory.java +32 -17
  40. package/lib/android/app/src/main/java/com/reactnativenavigation/options/Options.java +1 -1
  41. package/lib/android/app/src/main/java/com/reactnativenavigation/options/parsers/TypefaceLoader.kt +16 -10
  42. package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java +5 -2
  43. package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalFrameLayout.kt +3 -3
  44. package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalViewManager.kt +11 -8
  45. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/SystemUiUtils.kt +168 -0
  46. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenter.java +5 -2
  47. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +42 -2
  48. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildController.java +12 -16
  49. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +19 -11
  50. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/externalcomponent/ExternalComponentViewController.java +2 -2
  51. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenter.java +6 -4
  52. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManager.kt +8 -3
  53. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +15 -7
  54. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenter.java +127 -138
  55. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarController.kt +183 -22
  56. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonController.kt +25 -4
  57. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonPresenter.kt +9 -1
  58. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonSpan.kt +1 -1
  59. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/Presenter.java +52 -71
  60. package/lib/android/app/src/main/java/com/reactnativenavigation/views/component/ComponentLayout.java +2 -0
  61. package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/ReactImageMatrixAnimator.kt +2 -3
  62. package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/TopBar.java +1 -2
  63. package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/ButtonBar.kt +7 -12
  64. package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleAndButtonsContainer.kt +0 -2
  65. package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleSubTitleLayout.kt +0 -7
  66. package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +2 -1
  67. package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +7 -6
  68. package/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java +5 -0
  69. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/ImageLoaderMock.kt +5 -4
  70. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/Mocks.kt +3 -2
  71. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TypefaceLoaderMock.kt +5 -1
  72. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TransitionAnimationOptionsTest.kt +2 -3
  73. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/PresenterTest.java +25 -10
  74. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/LayoutFactoryTest.java +25 -2
  75. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/MotionEventTest.kt +1 -1
  76. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/{TitleAndButtonsMeasurer.kt → TitleAndButtonsMeasurerTest.kt} +2 -2
  77. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiThreadTest.java +2 -2
  78. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiUtilsTest.java +1 -1
  79. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt +572 -0
  80. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsPresenterTest.kt +1 -1
  81. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +2 -1
  82. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewControllerTest.java +5 -5
  83. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/fakes/FakeParentController.kt +1 -1
  84. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorTest.kt +1 -1
  85. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +7 -3
  86. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +17 -4
  87. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +2 -2
  88. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +5 -5
  89. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManagerTest.java +1 -0
  90. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +4 -0
  91. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +6 -2
  92. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +1 -1
  93. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +13 -8
  94. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +58 -51
  95. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +219 -41
  96. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerTest.java +4 -1
  97. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TitleAndButtonsContainerTest.kt +2 -2
  98. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/BaseViewAnimatorTest.kt +4 -4
  99. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainerTest.kt +1 -1
  100. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsTest.kt +4 -4
  101. package/lib/dist/Mock/Application.js +2 -2
  102. package/lib/dist/Mock/Components/BottomTabs.js +2 -2
  103. package/lib/dist/Mock/Components/ComponentScreen.js +15 -5
  104. package/lib/dist/Mock/Components/LayoutComponent.js +3 -2
  105. package/lib/dist/Mock/Components/Modals.js +2 -2
  106. package/lib/dist/Mock/Components/NavigationButton.d.ts +1 -1
  107. package/lib/dist/Mock/Components/NavigationButton.js +8 -10
  108. package/lib/dist/Mock/Components/Overlays.js +2 -2
  109. package/lib/dist/Mock/Components/Stack.js +2 -2
  110. package/lib/dist/Mock/Components/TopBar.d.ts +2 -2
  111. package/lib/dist/Mock/Components/TopBar.js +7 -6
  112. package/lib/dist/Mock/Layouts/BottomTabsNode.d.ts +1 -1
  113. package/lib/dist/Mock/Layouts/BottomTabsNode.js +3 -3
  114. package/lib/dist/Mock/Layouts/ComponentNode.d.ts +1 -1
  115. package/lib/dist/Mock/Layouts/ComponentNode.js +4 -4
  116. package/lib/dist/Mock/Layouts/LayoutNodeFactory.js +3 -3
  117. package/lib/dist/Mock/Layouts/Node.d.ts +1 -1
  118. package/lib/dist/Mock/Layouts/Node.js +5 -0
  119. package/lib/dist/Mock/Layouts/ParentNode.d.ts +2 -2
  120. package/lib/dist/Mock/Layouts/ParentNode.js +4 -3
  121. package/lib/dist/Mock/Layouts/StackNode.js +1 -1
  122. package/lib/dist/Mock/Stores/EventsStore.d.ts +5 -2
  123. package/lib/dist/Mock/Stores/EventsStore.js +7 -0
  124. package/lib/dist/Mock/Stores/LayoutStore.js +6 -3
  125. package/lib/dist/Mock/connect.js +1 -1
  126. package/lib/dist/Mock/index.js +1 -1
  127. package/lib/dist/Mock/mocks/NativeCommandsSender.d.ts +1 -1
  128. package/lib/dist/Mock/mocks/NativeCommandsSender.js +2 -2
  129. package/lib/dist/Mock/mocks/NativeEventsReceiver.d.ts +3 -3
  130. package/lib/dist/Mock/mocks/NativeEventsReceiver.js +6 -3
  131. package/lib/dist/{Navigation.d.ts → src/Navigation.d.ts} +0 -0
  132. package/lib/dist/{Navigation.js → src/Navigation.js} +19 -3
  133. package/lib/dist/{NavigationDelegate.d.ts → src/NavigationDelegate.d.ts} +0 -0
  134. package/lib/dist/{NavigationDelegate.js → src/NavigationDelegate.js} +1 -0
  135. package/lib/dist/{adapters → src/adapters}/AppRegistryService.d.ts +0 -0
  136. package/lib/dist/{adapters → src/adapters}/AppRegistryService.js +0 -0
  137. package/lib/dist/{adapters → src/adapters}/AssetResolver.d.ts +0 -0
  138. package/lib/dist/{adapters → src/adapters}/AssetResolver.js +0 -0
  139. package/lib/dist/src/adapters/ColorService.d.ts +3 -0
  140. package/lib/dist/{adapters → src/adapters}/ColorService.js +1 -1
  141. package/lib/dist/{adapters → src/adapters}/Constants.d.ts +0 -0
  142. package/lib/dist/{adapters → src/adapters}/Constants.js +10 -6
  143. package/lib/dist/{adapters → src/adapters}/NativeCommandsSender.d.ts +0 -0
  144. package/lib/dist/{adapters → src/adapters}/NativeCommandsSender.js +1 -0
  145. package/lib/dist/{adapters → src/adapters}/NativeEventsReceiver.d.ts +0 -0
  146. package/lib/dist/{adapters → src/adapters}/NativeEventsReceiver.js +1 -0
  147. package/lib/dist/{adapters → src/adapters}/NativeEventsReceiver.mock.d.ts +0 -0
  148. package/lib/dist/{adapters → src/adapters}/NativeEventsReceiver.mock.js +0 -0
  149. package/lib/dist/{adapters → src/adapters}/TouchablePreview.d.ts +0 -0
  150. package/lib/dist/src/adapters/TouchablePreview.js +89 -0
  151. package/lib/dist/{adapters → src/adapters}/UniqueIdProvider.d.ts +0 -0
  152. package/lib/dist/{adapters → src/adapters}/UniqueIdProvider.js +2 -2
  153. package/lib/dist/{commands → src/commands}/Commands.d.ts +0 -0
  154. package/lib/dist/{commands → src/commands}/Commands.js +24 -10
  155. package/lib/dist/{commands → src/commands}/Deprecations.d.ts +0 -0
  156. package/lib/dist/src/commands/Deprecations.js +80 -0
  157. package/lib/dist/{commands → src/commands}/LayoutTreeCrawler.d.ts +0 -0
  158. package/lib/dist/{commands → src/commands}/LayoutTreeCrawler.js +4 -2
  159. package/lib/dist/{commands → src/commands}/LayoutTreeParser.d.ts +0 -0
  160. package/lib/dist/{commands → src/commands}/LayoutTreeParser.js +1 -0
  161. package/lib/dist/{commands → src/commands}/LayoutType.d.ts +0 -0
  162. package/lib/dist/{commands → src/commands}/LayoutType.js +0 -0
  163. package/lib/dist/{commands → src/commands}/OptionsCrawler.d.ts +0 -0
  164. package/lib/dist/{commands → src/commands}/OptionsCrawler.js +6 -4
  165. package/lib/dist/{commands → src/commands}/OptionsProcessor.d.ts +1 -1
  166. package/lib/dist/{commands → src/commands}/OptionsProcessor.js +50 -42
  167. package/lib/dist/{components → src/components}/ComponentRegistry.d.ts +0 -0
  168. package/lib/dist/{components → src/components}/ComponentRegistry.js +4 -0
  169. package/lib/dist/{components → src/components}/ComponentWrapper.d.ts +0 -0
  170. package/lib/dist/{components → src/components}/ComponentWrapper.js +17 -17
  171. package/lib/dist/{components → src/components}/Modal.d.ts +0 -0
  172. package/lib/dist/{components → src/components}/Modal.js +8 -8
  173. package/lib/dist/{components → src/components}/Store.d.ts +2 -0
  174. package/lib/dist/{components → src/components}/Store.js +13 -6
  175. package/lib/dist/{events → src/events}/CommandsObserver.d.ts +0 -0
  176. package/lib/dist/{events → src/events}/CommandsObserver.js +2 -1
  177. package/lib/dist/{events → src/events}/ComponentEventsObserver.d.ts +4 -2
  178. package/lib/dist/{events → src/events}/ComponentEventsObserver.js +16 -14
  179. package/lib/dist/{events → src/events}/EventsRegistry.d.ts +2 -2
  180. package/lib/dist/{events → src/events}/EventsRegistry.js +3 -0
  181. package/lib/dist/{index.d.ts → src/index.d.ts} +0 -0
  182. package/lib/dist/src/index.js +22 -0
  183. package/lib/dist/{interfaces → src/interfaces}/CommandName.d.ts +0 -0
  184. package/lib/dist/{interfaces → src/interfaces}/CommandName.js +0 -0
  185. package/lib/dist/{interfaces → src/interfaces}/ComponentEvents.d.ts +0 -0
  186. package/lib/dist/{interfaces → src/interfaces}/ComponentEvents.js +0 -0
  187. package/lib/dist/{interfaces → src/interfaces}/EventSubscription.d.ts +0 -0
  188. package/lib/dist/{interfaces → src/interfaces}/EventSubscription.js +0 -0
  189. package/lib/dist/{interfaces → src/interfaces}/Events.d.ts +0 -0
  190. package/lib/dist/{interfaces → src/interfaces}/Events.js +0 -0
  191. package/lib/dist/{interfaces → src/interfaces}/Layout.d.ts +0 -0
  192. package/lib/dist/{interfaces → src/interfaces}/Layout.js +0 -0
  193. package/lib/dist/{interfaces → src/interfaces}/NavigationComponent.d.ts +0 -0
  194. package/lib/dist/{interfaces → src/interfaces}/NavigationComponent.js +8 -1
  195. package/lib/dist/{interfaces → src/interfaces}/NavigationComponentListener.d.ts +0 -0
  196. package/lib/dist/{interfaces → src/interfaces}/NavigationComponentListener.js +0 -0
  197. package/lib/dist/{interfaces → src/interfaces}/NavigationComponentProps.d.ts +0 -0
  198. package/lib/dist/{interfaces → src/interfaces}/NavigationComponentProps.js +0 -0
  199. package/lib/dist/{interfaces → src/interfaces}/NavigationFunctionComponent.d.ts +0 -0
  200. package/lib/dist/{interfaces → src/interfaces}/NavigationFunctionComponent.js +0 -0
  201. package/lib/dist/{interfaces → src/interfaces}/Options.d.ts +9 -0
  202. package/lib/dist/{interfaces → src/interfaces}/Options.js +0 -0
  203. package/lib/dist/{interfaces → src/interfaces}/ProcessorSubscription.d.ts +0 -0
  204. package/lib/dist/{interfaces → src/interfaces}/ProcessorSubscription.js +0 -0
  205. package/lib/dist/{interfaces → src/interfaces}/Processors.d.ts +0 -0
  206. package/lib/dist/{interfaces → src/interfaces}/Processors.js +0 -0
  207. package/lib/dist/{processors → src/processors}/LayoutProcessor.d.ts +0 -0
  208. package/lib/dist/{processors → src/processors}/LayoutProcessor.js +1 -0
  209. package/lib/dist/{processors → src/processors}/LayoutProcessorsStore.d.ts +0 -0
  210. package/lib/dist/{processors → src/processors}/LayoutProcessorsStore.js +1 -3
  211. package/lib/dist/{processors → src/processors}/OptionProcessorsStore.d.ts +0 -0
  212. package/lib/dist/{processors → src/processors}/OptionProcessorsStore.js +1 -3
  213. package/lib/dist/{types.d.ts → src/types.d.ts} +0 -0
  214. package/lib/dist/{types.js → src/types.js} +0 -0
  215. package/lib/ios/AnimationObserver.h +17 -0
  216. package/lib/ios/AnimationObserver.m +41 -0
  217. package/lib/ios/BottomTabPresenter.h +0 -3
  218. package/lib/ios/BottomTabPresenter.m +0 -8
  219. package/lib/ios/RNNAssert.h +2 -2
  220. package/lib/ios/RNNBasePresenter.h +0 -4
  221. package/lib/ios/RNNBasePresenter.m +0 -12
  222. package/lib/ios/RNNBottomTabOptions.m +2 -1
  223. package/lib/ios/RNNBottomTabsController.m +8 -8
  224. package/lib/ios/RNNBridgeManager.mm +0 -1
  225. package/lib/ios/RNNButtonBuilder.m +2 -0
  226. package/lib/ios/RNNButtonOptions.h +1 -0
  227. package/lib/ios/RNNButtonOptions.m +4 -0
  228. package/lib/ios/RNNCommandsHandler.m +15 -8
  229. package/lib/ios/RNNComponentPresenter.m +0 -4
  230. package/lib/ios/RNNComponentViewController.m +2 -4
  231. package/lib/ios/RNNDotIndicatorPresenter.m +2 -1
  232. package/lib/ios/RNNExternalViewController.m +2 -4
  233. package/lib/ios/RNNModalManager.h +2 -1
  234. package/lib/ios/RNNModalManager.m +12 -21
  235. package/lib/ios/RNNSegmentedControl.h +1 -1
  236. package/lib/ios/RNNSideMenuChildVC.m +0 -4
  237. package/lib/ios/RNNSideMenuController.m +0 -4
  238. package/lib/ios/RNNSplitViewController.m +0 -4
  239. package/lib/ios/RNNStackController.m +0 -4
  240. package/lib/ios/RNNStackPresenter.m +3 -0
  241. package/lib/ios/RNNSwizzles.m +20 -0
  242. package/lib/ios/RNNTabBarItemCreator.m +3 -2
  243. package/lib/ios/RNNUIBarButtonItem.h +2 -0
  244. package/lib/ios/RNNUIBarButtonItem.m +17 -0
  245. package/lib/ios/ReactNativeNavigation.xcodeproj/project.pbxproj +8 -0
  246. package/lib/ios/TopBarPresenter.m +8 -4
  247. package/lib/ios/UIViewController+RNNOptions.m +1 -1
  248. package/lib/src/commands/Commands.ts +6 -1
  249. package/lib/src/commands/LayoutTreeCrawler.ts +2 -2
  250. package/lib/src/commands/OptionsCrawler.ts +2 -1
  251. package/lib/src/commands/OptionsProcessor.ts +15 -13
  252. package/lib/src/components/Store.ts +9 -0
  253. package/lib/src/events/ComponentEventsObserver.ts +5 -1
  254. package/lib/src/events/EventsRegistry.ts +2 -1
  255. package/lib/src/interfaces/Options.ts +10 -0
  256. package/package.json +19 -60
  257. package/tsconfig.mocks.json +7 -0
  258. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/StatusBarUtils.java +0 -41
  259. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.java +0 -511
  260. package/lib/dist/adapters/ColorService.d.ts +0 -3
  261. package/lib/dist/adapters/TouchablePreview.js +0 -91
  262. package/lib/dist/commands/Deprecations.js +0 -82
  263. package/lib/dist/index.js +0 -22
@@ -34,7 +34,7 @@ import static org.mockito.Mockito.never;
34
34
  import static org.mockito.Mockito.spy;
35
35
  import static org.mockito.Mockito.times;
36
36
  import static org.mockito.Mockito.verify;
37
- import static org.mockito.Mockito.verifyZeroInteractions;
37
+ import static org.mockito.Mockito.verifyNoInteractions;
38
38
 
39
39
  public class ModalPresenterTest extends BaseTest {
40
40
  private static final String MODAL_ID_1 = "modalId1";
@@ -50,6 +50,7 @@ public class ModalPresenterTest extends BaseTest {
50
50
 
51
51
  @Override
52
52
  public void beforeEach() {
53
+ super.beforeEach();
53
54
  Activity activity = newActivity();
54
55
  ChildControllersRegistry childRegistry = new ChildControllersRegistry();
55
56
 
@@ -108,7 +109,7 @@ public class ModalPresenterTest extends BaseTest {
108
109
  defaultOptions.animations.showModal = TransitionAnimationOptionsKt.parseTransitionAnimationOptions(disabledShowModalAnimation);
109
110
  uut.setDefaultOptions(defaultOptions);
110
111
  uut.showModal(modal1, root, new CommandListenerAdapter());
111
- verifyZeroInteractions(animator);
112
+ verifyNoInteractions(animator);
112
113
  }
113
114
 
114
115
  @Test
@@ -162,7 +163,7 @@ public class ModalPresenterTest extends BaseTest {
162
163
  modal1.options.animations.showModal.setWaitForRender(new Bool(true));
163
164
  uut.showModal(modal1, root, new CommandListenerAdapter());
164
165
  verify(modal1).addOnAppearedListener(any());
165
- verifyZeroInteractions(animator);
166
+ verifyNoInteractions(animator);
166
167
  }
167
168
 
168
169
  @Test
@@ -210,6 +211,7 @@ public class ModalPresenterTest extends BaseTest {
210
211
  uut.setRootLayout(spy);
211
212
 
212
213
  uut.showModal(modal1, root, new CommandListenerAdapter());
214
+ idleMainLooper();
213
215
  uut.dismissModal(modal1, root, root, new CommandListenerAdapter());
214
216
 
215
217
  verify(spy).addView(root.getView(), 0);
@@ -237,6 +239,7 @@ public class ModalPresenterTest extends BaseTest {
237
239
  verify(modal1).onViewWillAppear();
238
240
 
239
241
  uut.showModal(modal2, modal1, new CommandListenerAdapter());
242
+ idleMainLooper();
240
243
  assertThat(modal1.getView().getParent()).isNull();
241
244
 
242
245
  Shadows.shadowOf(Looper.getMainLooper()).idle();
@@ -253,6 +256,7 @@ public class ModalPresenterTest extends BaseTest {
253
256
 
254
257
  uut.showModal(modal1, root, new CommandListenerAdapter());
255
258
  uut.showModal(modal2, modal1, new CommandListenerAdapter());
259
+ idleMainLooper();
256
260
  assertThat(modal1.getView().getParent()).isNull();
257
261
  assertThat(root.getView().getParent()).isNull();
258
262
 
@@ -13,7 +13,7 @@ import com.reactnativenavigation.react.events.EventEmitter;
13
13
  import com.reactnativenavigation.viewcontrollers.child.ChildControllersRegistry;
14
14
  import com.reactnativenavigation.viewcontrollers.stack.StackController;
15
15
  import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
16
-
16
+ import com.reactnativenavigation.options.TransitionAnimationOptions;
17
17
  import org.junit.Test;
18
18
  import org.mockito.Mockito;
19
19
 
@@ -30,7 +30,8 @@ import static org.mockito.Mockito.never;
30
30
  import static org.mockito.Mockito.spy;
31
31
  import static org.mockito.Mockito.times;
32
32
  import static org.mockito.Mockito.verify;
33
- import static org.mockito.Mockito.verifyZeroInteractions;
33
+ import static org.mockito.Mockito.verifyNoInteractions;
34
+ import static org.mockito.Mockito.verifyNoMoreInteractions;
34
35
  import static org.mockito.Mockito.when;
35
36
 
36
37
  public class ModalStackTest extends BaseTest {
@@ -54,6 +55,7 @@ public class ModalStackTest extends BaseTest {
54
55
 
55
56
  @Override
56
57
  public void beforeEach() {
58
+ super.beforeEach();
57
59
  activity = newActivity();
58
60
  childRegistry = new ChildControllersRegistry();
59
61
  root = new SimpleViewController(activity, childRegistry, "root", new Options());
@@ -81,6 +83,16 @@ public class ModalStackTest extends BaseTest {
81
83
  .build();
82
84
  }
83
85
 
86
+ @Test
87
+ public void showModal_DidAppearEventShouldWaitForReactViewToBeShown(){
88
+ CommandListener listener = spy(new CommandListenerAdapter());
89
+ uut.showModal(modal1, root, listener);
90
+ verify(modal1).addOnAppearedListener(any());
91
+ verify(listener).onSuccess(modal1.getId());
92
+ idleMainLooper();
93
+ verify(modal1).onViewDidAppear();
94
+ }
95
+
84
96
  @Test
85
97
  public void modalRefIsSaved() {
86
98
  disableShowModalAnimation(modal1);
@@ -94,6 +106,7 @@ public class ModalStackTest extends BaseTest {
94
106
  public void showModal() {
95
107
  CommandListener listener = spy(new CommandListenerAdapter());
96
108
  uut.showModal(modal1, root, listener);
109
+ idleMainLooper();
97
110
  verify(listener).onSuccess(modal1.getId());
98
111
  verify(modal1).onViewDidAppear();
99
112
  assertThat(uut.size()).isOne();
@@ -140,7 +153,7 @@ public class ModalStackTest extends BaseTest {
140
153
  uut.dismissModal(MODAL_ID_1, root, listener);
141
154
  verify(onModalWillDismiss, times(0)).run();
142
155
  verify(listener, times(1)).onError(anyString());
143
- verifyZeroInteractions(listener);
156
+ verifyNoMoreInteractions(listener);
144
157
  }
145
158
 
146
159
  @Test
@@ -176,7 +189,7 @@ public class ModalStackTest extends BaseTest {
176
189
  });
177
190
  uut.dismissAllModals(root, Options.EMPTY, listener);
178
191
  verify(listener, times(1)).onSuccess(anyString());
179
- verifyZeroInteractions(listener);
192
+ verifyNoMoreInteractions(listener);
180
193
  }
181
194
 
182
195
  @Test
@@ -507,7 +507,7 @@ public class NavigatorTest extends BaseTest {
507
507
  StackController stack2 = newStack(child2, child3, child4);
508
508
  BottomTabsController bottomTabsController = newTabs(Arrays.asList(stack1, stack2));
509
509
  uut.setRoot(bottomTabsController, new CommandListenerAdapter(), reactInstanceManager);
510
-
510
+ idleMainLooper();
511
511
  CommandListenerAdapter listener = spy(new CommandListenerAdapter() {
512
512
  @Override
513
513
  public void onSuccess(String childId) {
@@ -670,7 +670,7 @@ public class NavigatorTest extends BaseTest {
670
670
  final StackController stack2 = newStack(child2, child3);
671
671
  BottomTabsController bottomTabsController = newTabs(Arrays.asList(stack1, stack2));
672
672
  uut.setRoot(bottomTabsController, new CommandListenerAdapter(), reactInstanceManager);
673
-
673
+ idleMainLooper();
674
674
  CommandListenerAdapter listener = spy(new CommandListenerAdapter() {
675
675
  @Override
676
676
  public void onSuccess(String childId) {
@@ -3,9 +3,6 @@ package com.reactnativenavigation.viewcontrollers.navigator
3
3
  import android.app.Activity
4
4
  import androidx.coordinatorlayout.widget.CoordinatorLayout
5
5
  import com.facebook.react.ReactInstanceManager
6
- import com.nhaarman.mockitokotlin2.any
7
- import com.nhaarman.mockitokotlin2.eq
8
- import com.nhaarman.mockitokotlin2.never
9
6
  import com.reactnativenavigation.BaseTest
10
7
  import com.reactnativenavigation.TestActivity
11
8
  import com.reactnativenavigation.hierarchy.root.RootAnimator
@@ -22,6 +19,9 @@ import org.assertj.core.api.Java6Assertions
22
19
  import org.junit.Test
23
20
  import org.mockito.ArgumentCaptor
24
21
  import org.mockito.Mockito
22
+ import org.mockito.kotlin.any
23
+ import org.mockito.kotlin.eq
24
+ import org.mockito.kotlin.never
25
25
  import org.robolectric.android.controller.ActivityController
26
26
 
27
27
  class RootPresenterTest : BaseTest() {
@@ -76,7 +76,7 @@ class RootPresenterTest : BaseTest() {
76
76
  fun setRoot_doesNotAnimateByDefault() {
77
77
  val listener = Mockito.spy(CommandListenerAdapter())
78
78
  uut.setRoot(root, null, defaultOptions, listener, reactInstanceManager)
79
- Mockito.verifyZeroInteractions(animator)
79
+ Mockito.verifyNoInteractions(animator)
80
80
  Mockito.verify(listener).onSuccess(root.id)
81
81
  }
82
82
 
@@ -210,7 +210,7 @@ class RootPresenterTest : BaseTest() {
210
210
  uut.setRoot(spy, null, defaultOptions, listener, reactInstanceManager)
211
211
  Mockito.verify(spy).addOnAppearedListener(any())
212
212
  Java6Assertions.assertThat(spy.view.alpha).isZero()
213
- Mockito.verifyZeroInteractions(listener)
213
+ Mockito.verifyNoInteractions(listener)
214
214
  spy.onViewWillAppear()
215
215
  idleMainLooper()
216
216
  Java6Assertions.assertThat(spy.view.alpha).isOne()
@@ -32,6 +32,7 @@ public class OverlayManagerTest extends BaseTest {
32
32
 
33
33
  @Override
34
34
  public void beforeEach() {
35
+ super.beforeEach();
35
36
  Activity activity = newActivity();
36
37
  contentLayout = new FrameLayout(activity);
37
38
  contentLayout.layout(0, 0, 1000, 1000);
@@ -264,6 +264,8 @@ public class ParentControllerTest extends BaseTest {
264
264
  @Test
265
265
  public void getTopInsetForChild() {
266
266
  ParentController<?> parent = Mockito.mock(ParentController.class);
267
+ Mockito.when(parent.resolveChildOptions(uut)).thenReturn(Options.EMPTY);
268
+
267
269
  when(parent.getTopInset(any())).thenReturn(123);
268
270
  uut.setParentController(parent);
269
271
 
@@ -280,6 +282,8 @@ public class ParentControllerTest extends BaseTest {
280
282
  @Test
281
283
  public void getBottomInsetForChild() {
282
284
  ParentController<?> parent = Mockito.mock(ParentController.class);
285
+ Mockito.when(parent.resolveChildOptions(uut)).thenReturn(Options.EMPTY);
286
+
283
287
  when(parent.getBottomInset(any())).thenReturn(123);
284
288
  uut.setParentController(parent);
285
289
 
@@ -2,6 +2,7 @@ package com.reactnativenavigation.viewcontrollers.sidemenu;
2
2
 
3
3
  import android.app.Activity;
4
4
  import android.content.res.Resources;
5
+ import android.graphics.Path;
5
6
  import android.util.TypedValue;
6
7
  import android.view.Gravity;
7
8
  import android.view.View;
@@ -55,6 +56,7 @@ public class SideMenuControllerTest extends BaseTest {
55
56
 
56
57
  @Override
57
58
  public void beforeEach() {
59
+ super.beforeEach();
58
60
  activity = createActivity();
59
61
 
60
62
  childRegistry = new ChildControllersRegistry();
@@ -72,6 +74,7 @@ public class SideMenuControllerTest extends BaseTest {
72
74
  };
73
75
  uut.setCenterController(center);
74
76
  parent = mock(ParentController.class);
77
+ Mockito.when(parent.resolveChildOptions(uut)).thenReturn(Options.EMPTY);
75
78
  uut.setParentController(parent);
76
79
  }
77
80
 
@@ -118,12 +121,12 @@ public class SideMenuControllerTest extends BaseTest {
118
121
 
119
122
  @Test
120
123
  public void onViewAppeared() {
121
- ViewController<?> left = spy(this.left);
124
+ ViewController left = spy(this.left);
122
125
  ViewGroup leftView = spy(left.getView());
123
126
  when(left.findController(leftView)).thenReturn(left);
124
127
  Mockito.doReturn(leftView).when(left).getView();
125
128
 
126
- ViewController<?> right = spy(this.right);
129
+ ViewController right = spy(this.right);
127
130
  ViewGroup rightView = spy(right.getView());
128
131
  when(right.findController(rightView)).thenReturn(right);
129
132
  Mockito.doReturn(rightView).when(right).getView();
@@ -369,6 +372,7 @@ public class SideMenuControllerTest extends BaseTest {
369
372
  @Test
370
373
  public void onMeasureChild_topInsetsAreApplied() {
371
374
  setLeftRight(spy(left), spy(right));
375
+ idleMainLooper();
372
376
  uut.applyTopInset();
373
377
  forEach(uut.getChildControllers(), c -> verify(c).applyTopInset());
374
378
  }
@@ -4,7 +4,7 @@ import android.animation.AnimatorSet
4
4
  import android.animation.ObjectAnimator
5
5
  import android.app.Activity
6
6
  import android.widget.FrameLayout
7
- import com.nhaarman.mockitokotlin2.*
7
+ import org.mockito.kotlin.*
8
8
  import com.reactnativenavigation.BaseTest
9
9
  import com.reactnativenavigation.mocks.Mocks
10
10
  import com.reactnativenavigation.mocks.SimpleViewController
@@ -6,7 +6,7 @@ import android.content.Context
6
6
  import android.view.View
7
7
  import android.widget.FrameLayout
8
8
  import androidx.coordinatorlayout.widget.CoordinatorLayout
9
- import com.nhaarman.mockitokotlin2.*
9
+ import org.mockito.kotlin.*
10
10
  import com.reactnativenavigation.BaseTest
11
11
  import com.reactnativenavigation.TestUtils
12
12
  import com.reactnativenavigation.mocks.*
@@ -61,7 +61,7 @@ class StackControllerTest : BaseTest() {
61
61
  eventEmitter = mock()
62
62
  backButtonHelper = spy(BackButtonHelper())
63
63
  activity = newActivity()
64
- StatusBarUtils.saveStatusBarHeight(63)
64
+ SystemUiUtils.saveStatusBarHeight(63)
65
65
  animator = spy(StackAnimator(activity))
66
66
  childRegistry = ChildControllersRegistry()
67
67
  presenter = spy(StackPresenter(
@@ -197,7 +197,7 @@ class StackControllerTest : BaseTest() {
197
197
  fun setRoot_pushDuringSetRootAnimationShouldNotCrash() {
198
198
  uut.push(child1, CommandListenerAdapter())
199
199
  uut.push(child2, CommandListenerAdapter())
200
-
200
+ idleMainLooper()
201
201
  uut.setRoot(listOf(child1), CommandListenerAdapter())
202
202
  uut.push(child3, CommandListenerAdapter())
203
203
  assertThat(uut.currentChild).isEqualTo(child3)
@@ -281,6 +281,7 @@ class StackControllerTest : BaseTest() {
281
281
  disablePushAnimation(child1, child2)
282
282
  uut.push(child1, CommandListenerAdapter()) // Initialize stack with a child
283
283
  uut.push(child2, CommandListenerAdapter())
284
+ idleMainLooper()
284
285
  verify(child2).onViewDidAppear()
285
286
  }
286
287
 
@@ -608,8 +609,9 @@ class StackControllerTest : BaseTest() {
608
609
  assertNotChildOf(uut.view, child1.view)
609
610
  uut.push(child1, CommandListenerAdapter())
610
611
  assertIsChild(uut.view, child1.view)
611
-
612
+ idleMainLooper()
612
613
  uut.push(child2, CommandListenerAdapter())
614
+ idleMainLooper()
613
615
  assertIsChild(uut.view, child2)
614
616
  assertNotChildOf(uut.view, child1)
615
617
  }
@@ -663,7 +665,7 @@ class StackControllerTest : BaseTest() {
663
665
  val child1View: View = child1.view
664
666
  uut.push(child1, CommandListenerAdapter())
665
667
  uut.push(child2, CommandListenerAdapter())
666
-
668
+ idleMainLooper()
667
669
  assertIsChild(uut.view, child2View)
668
670
  assertNotChildOf(uut.view, child1View)
669
671
  uut.pop(Options.EMPTY, CommandListenerAdapter())
@@ -715,7 +717,7 @@ class StackControllerTest : BaseTest() {
715
717
  uut.push(child2, CommandListenerAdapter())
716
718
  uut.push(child3, CommandListenerAdapter())
717
719
  uut.push(child4, CommandListenerAdapter())
718
-
720
+ idleMainLooper()
719
721
  uut.popTo(child2, Options.EMPTY, CommandListenerAdapter())
720
722
  verify(animator, never()).pop(any(), eq(child1), any(), any(), any())
721
723
  verify(animator, never()).pop(any(), eq(child2), any(), any(), any())
@@ -729,6 +731,7 @@ class StackControllerTest : BaseTest() {
729
731
  uut.push(child1, mock())
730
732
  uut.push(child2, mock())
731
733
  uut.push(child3, mock())
734
+ idleMainLooper()
732
735
  uut.popTo(child1, Options.EMPTY, mock())
733
736
  animator.endPushAnimation(child3)
734
737
  assertContainsOnlyId(child1.id)
@@ -759,8 +762,8 @@ class StackControllerTest : BaseTest() {
759
762
  disablePushAnimation(child1, child2, child3)
760
763
  uut.push(child1, CommandListenerAdapter())
761
764
  uut.push(child2, CommandListenerAdapter())
762
-
763
765
  uut.push(child3, CommandListenerAdapter())
766
+ idleMainLooper()
764
767
  uut.popToRoot(Options.EMPTY, object : CommandListenerAdapter() {
765
768
  override fun onSuccess(childId: String) {
766
769
  verify(animator).pop(eq(child1), eq(child3), any(), any(), any())
@@ -776,6 +779,7 @@ class StackControllerTest : BaseTest() {
776
779
  uut.push(child1, CommandListenerAdapter())
777
780
  uut.push(child2, CommandListenerAdapter())
778
781
  uut.push(child3, CommandListenerAdapter())
782
+ idleMainLooper()
779
783
  uut.popToRoot(Options.EMPTY, object : CommandListenerAdapter() {
780
784
  override fun onSuccess(childId: String) {
781
785
  verify(child1, never()).destroy()
@@ -811,6 +815,7 @@ class StackControllerTest : BaseTest() {
811
815
  uut.push(child1, mock())
812
816
  uut.push(child2, mock())
813
817
  uut.push(child3, mock())
818
+ idleMainLooper()
814
819
  uut.popToRoot(Options.EMPTY, mock())
815
820
  animator.endPushAnimation(child3)
816
821
  assertContainsOnlyId(child1.id)
@@ -1084,7 +1089,7 @@ class StackControllerTest : BaseTest() {
1084
1089
  disablePushAnimation(child1)
1085
1090
  uut.push(child1, CommandListenerAdapter())
1086
1091
  ShadowLooper.idleMainLooper()
1087
- assertThat(ViewUtils.topMargin(uut.topBar)).isEqualTo(StatusBarUtils.getStatusBarHeight(activity))
1092
+ assertThat(ViewUtils.topMargin(uut.topBar)).isEqualTo(SystemUiUtils.getStatusBarHeight(activity))
1088
1093
  }
1089
1094
 
1090
1095
  @Test
@@ -7,7 +7,7 @@ import android.graphics.Color
7
7
  import android.graphics.Typeface
8
8
  import android.view.View
9
9
  import android.view.ViewGroup
10
- import com.nhaarman.mockitokotlin2.*
10
+ import org.mockito.kotlin.*
11
11
  import com.reactnativenavigation.BaseTest
12
12
  import com.reactnativenavigation.TestUtils
13
13
  import com.reactnativenavigation.fakes.IconResolverFake
@@ -17,7 +17,10 @@ import com.reactnativenavigation.options.params.*
17
17
  import com.reactnativenavigation.options.params.Number
18
18
  import com.reactnativenavigation.options.parsers.TypefaceLoader
19
19
  import com.reactnativenavigation.react.CommandListenerAdapter
20
- import com.reactnativenavigation.utils.*
20
+ import com.reactnativenavigation.utils.CollectionUtils
21
+ import com.reactnativenavigation.utils.RenderChecker
22
+ import com.reactnativenavigation.utils.TitleBarHelper
23
+ import com.reactnativenavigation.utils.UiUtils
21
24
  import com.reactnativenavigation.viewcontrollers.child.ChildControllersRegistry
22
25
  import com.reactnativenavigation.viewcontrollers.stack.topbar.TopBarController
23
26
  import com.reactnativenavigation.viewcontrollers.stack.topbar.button.ButtonController
@@ -99,6 +102,7 @@ class StackPresenterTest : BaseTest() {
99
102
 
100
103
  @Test
101
104
  fun onConfigurationChange_shouldApplyColors() {
105
+ parent.setRoot(listOf(child), CommandListenerAdapter())
102
106
  val options = Options.EMPTY.copy()
103
107
  options.topBar.borderColor = ThemeColour.of(Color.BLACK, Color.RED)
104
108
  options.topBar.background = TopBarBackgroundOptions().apply {
@@ -122,7 +126,7 @@ class StackPresenterTest : BaseTest() {
122
126
  options.topTabs.unselectedTabColor = ThemeColour.of(Color.BLACK, Color.RED)
123
127
 
124
128
  mockConfiguration.uiMode = Configuration.UI_MODE_NIGHT_NO
125
- uut.onConfigurationChanged(options)
129
+ uut.onConfigurationChanged(options, getCurrentChild())
126
130
 
127
131
  verify(topBar).setTitleTextColor(Color.BLACK)
128
132
  verify(topBar).setSubtitleColor(Color.BLACK)
@@ -133,7 +137,7 @@ class StackPresenterTest : BaseTest() {
133
137
  verify(topBar).setBackButton(any())
134
138
 
135
139
  mockConfiguration.uiMode = Configuration.UI_MODE_NIGHT_YES
136
- uut.onConfigurationChanged(options)
140
+ uut.onConfigurationChanged(options, getCurrentChild())
137
141
 
138
142
  verify(topBar).setTitleTextColor(Color.RED)
139
143
  verify(topBar).setSubtitleColor(Color.RED)
@@ -147,15 +151,18 @@ class StackPresenterTest : BaseTest() {
147
151
 
148
152
  @Test
149
153
  fun onConfigurationChange_shouldApplyColorsOnTopBarButtons() {
154
+ parent.setRoot(listOf(child), CommandListenerAdapter())
155
+
150
156
  val options = Options.EMPTY.copy()
151
157
  options.topBar.buttons.left = arrayListOf(ButtonOptions())
152
158
  options.topBar.buttons.right = arrayListOf(ButtonOptions())
153
- uut.applyChildOptions(options,parent,child)
154
159
 
155
- uut.onConfigurationChanged(options)
160
+ uut.applyChildOptions(options,parent,child)
161
+ verify(topBarController, times(1)).applyRightButtonsOptions(any(),any(),any())
162
+ verify(topBarController, times(1)).applyLeftButtonsOptions(any(),any(),any())
156
163
 
157
- verify(topBarController, times(2)).applyRightButtons(any())
158
- verify(topBarController, times(2)).applyLeftButtons(any())
164
+ uut.onConfigurationChanged(options, getCurrentChild())
165
+ verify(topBarController, times(1)).onConfigurationChanged(any(), any(), any())
159
166
  }
160
167
 
161
168
  @Test
@@ -252,19 +259,19 @@ class StackPresenterTest : BaseTest() {
252
259
  @Test
253
260
  fun mergeButtons() {
254
261
  uut.mergeChildOptions(EMPTY_OPTIONS, EMPTY_OPTIONS, parent, child)
255
- verify(topBarController, never()).applyRightButtons(any())
256
- verify(topBarController, never()).applyLeftButtons(any())
262
+ verify(topBarController, never()).mergeLeftButtonsOptions(any(),any(),any())
263
+ verify(topBarController, never()).mergeRightButtonsOptions(any(),any(),any())
257
264
 
258
265
  val options = Options()
259
266
  val button = ButtonOptions()
260
267
  button.text = Text("btn")
261
268
  options.topBar.buttons.right = ArrayList(setOf(button))
262
269
  uut.mergeChildOptions(options, EMPTY_OPTIONS, parent, child)
263
- verify(topBarController).mergeRightButtons(any(), any())
270
+ verify(topBarController).mergeRightButtonsOptions(any(), any(),any())
264
271
 
265
272
  options.topBar.buttons.left = ArrayList(setOf(button))
266
273
  uut.mergeChildOptions(options, EMPTY_OPTIONS, parent, child)
267
- verify(topBarController).mergeLeftButtons(any(), any())
274
+ verify(topBarController).mergeLeftButtonsOptions(any(), any(), any())
268
275
  }
269
276
 
270
277
  @Test
@@ -313,8 +320,8 @@ class StackPresenterTest : BaseTest() {
313
320
  toApply.topBar.buttons.right = arrayListOf(textBtn1, componentBtn1)
314
321
  uut.applyChildOptions(toApply, parent, child)
315
322
 
316
- val captor1 = argumentCaptor<List<ButtonController>>()
317
- verify(topBarController).applyRightButtons(captor1.capture())
323
+ val captor1 = argumentCaptor<List<ButtonOptions>>()
324
+ verify(topBarController).applyRightButtonsOptions(any(),captor1.capture(), any())
318
325
  assertThat(topBar.rightButtonBar.menu.size()).isEqualTo(2)
319
326
 
320
327
  val appliedButtons = captor1.firstValue
@@ -325,12 +332,12 @@ class StackPresenterTest : BaseTest() {
325
332
  uut.mergeChildOptions(toMerge, Options.EMPTY, parent, child)
326
333
 
327
334
  assertThat(topBar.rightButtonBar.menu.size()).isEqualTo(3)
328
- val captor2 = argumentCaptor<List<ButtonController>>()
329
- verify(topBarController).mergeRightButtons(captor2.capture(), any())
335
+ val captor2 = argumentCaptor<List<ButtonOptions>>()
336
+ verify(topBarController).mergeRightButtonsOptions(any(),captor2.capture(), any())
330
337
  val mergedButtons = captor2.firstValue
331
338
  assertThat(mergedButtons).hasSize(3)
332
- assertThat(appliedButtons[0]).isNotEqualTo(mergedButtons[0])
333
- assertThat(appliedButtons[1]).isEqualTo(mergedButtons[2])
339
+ assertThat(appliedButtons[0].id).isNotEqualTo(mergedButtons[1].id)
340
+ assertThat(appliedButtons[1].id).isEqualTo(mergedButtons[2].id)
334
341
  }
335
342
 
336
343
  @Test
@@ -357,15 +364,14 @@ class StackPresenterTest : BaseTest() {
357
364
  options.topBar.buttons.left = ArrayList(listOf(textBtn2))
358
365
  uut.applyChildOptions(options, parent, child)
359
366
  ShadowLooper.idleMainLooper()
360
- verify(topBar, times(1)).clearLeftButtons()
361
- verify(topBar, times(1)).clearBackButton()
367
+ verify(topBarController, times(1)).applyLeftButtonsOptions(any(), any(), any())
368
+ verify(topBar, never()).setBackButton(any())
362
369
 
363
370
  val backButtonHidden = Options()
364
371
  backButtonHidden.topBar.buttons.back.setHidden()
365
372
  uut.mergeChildOptions(backButtonHidden, options, parent, child)
366
373
  ShadowLooper.idleMainLooper()
367
- verify(topBar, times(1)).clearLeftButtons()
368
- verify(topBar, times(2)).clearBackButton()
374
+ verify(topBar, times(1)).clearBackButton()
369
375
  }
370
376
 
371
377
  @Test
@@ -400,7 +406,7 @@ class StackPresenterTest : BaseTest() {
400
406
 
401
407
  assertThat(toMerge.topBar.buttons.back.hasValue()).isTrue()
402
408
  uut.mergeChildOptions(toMerge, Options.EMPTY, parent, child)
403
- verify(topBarController).mergeLeftButtons(any(), any())
409
+ verify(topBarController).mergeLeftButtonsOptions(any(), any(),any())
404
410
  verify(topBar, never()).clearLeftButtons()
405
411
  }
406
412
 
@@ -662,15 +668,15 @@ class StackPresenterTest : BaseTest() {
662
668
  options.topBar.buttons.left = ArrayList()
663
669
  options.topBar.buttons.left!!.add(leftButton)
664
670
  uut.applyChildOptions(options, parent, child)
665
- val rightCaptor = argumentCaptor<List<ButtonController>>()
666
- verify(topBarController).applyRightButtons(rightCaptor.capture())
667
- assertThat(rightCaptor.firstValue[0].button.color.get()).isEqualTo(options.topBar.rightButtonColor.get())
668
- assertThat(rightCaptor.firstValue[1].button.color.get()).isEqualTo(options.topBar.rightButtonColor.get())
671
+ val rightCaptor = argumentCaptor<List<ButtonOptions>>()
672
+ verify(topBarController).applyRightButtonsOptions(any(),rightCaptor.capture(), any())
673
+ assertThat(rightCaptor.firstValue[0].color.get()).isEqualTo(options.topBar.rightButtonColor.get())
674
+ assertThat(rightCaptor.firstValue[1].color.get()).isEqualTo(options.topBar.rightButtonColor.get())
669
675
  assertThat(rightCaptor.firstValue[0]).isNotEqualTo(rightButton1)
670
676
  assertThat(rightCaptor.firstValue[1]).isNotEqualTo(rightButton2)
671
- val leftCaptor = argumentCaptor<List<ButtonController>>()
672
- verify(topBarController).applyLeftButtons(leftCaptor.capture())
673
- assertThat(leftCaptor.firstValue[0].button.color).isEqualTo(options.topBar.leftButtonColor)
677
+ val leftCaptor = argumentCaptor<List<ButtonOptions>>()
678
+ verify(topBarController).applyLeftButtonsOptions(any(),leftCaptor.capture(),any())
679
+ assertThat(leftCaptor.firstValue[0].color).isEqualTo(options.topBar.leftButtonColor)
674
680
  assertThat(leftCaptor.firstValue[0]).isNotEqualTo(leftButton)
675
681
  }
676
682
 
@@ -790,15 +796,15 @@ class StackPresenterTest : BaseTest() {
790
796
  options2.topBar.buttons.left = ArrayList(listOf(leftButton))
791
797
 
792
798
  uut.mergeChildOptions(options2, appliedOptions, parent, child)
793
- val rightCaptor = argumentCaptor<List<ButtonController>>()
794
- verify(topBarController).mergeRightButtons(rightCaptor.capture(), any())
795
- assertThat(rightCaptor.firstValue[0].button.color.get()).isEqualTo(appliedOptions.topBar.rightButtonColor.get())
796
- assertThat(rightCaptor.firstValue[1].button.color.get()).isEqualTo(appliedOptions.topBar.rightButtonColor.get())
799
+ val rightCaptor = argumentCaptor<List<ButtonOptions>>()
800
+ verify(topBarController).mergeRightButtonsOptions(any(),rightCaptor.capture(), any())
801
+ assertThat(rightCaptor.firstValue[0].color.get()).isEqualTo(appliedOptions.topBar.rightButtonColor.get())
802
+ assertThat(rightCaptor.firstValue[1].color.get()).isEqualTo(appliedOptions.topBar.rightButtonColor.get())
797
803
  assertThat(rightCaptor.firstValue[0]).isNotEqualTo(rightButton1)
798
804
  assertThat(rightCaptor.firstValue[1]).isNotEqualTo(rightButton2)
799
- val leftCaptor = argumentCaptor<List<ButtonController>>()
800
- verify(topBarController).mergeLeftButtons(leftCaptor.capture(), any())
801
- assertThat(leftCaptor.firstValue[0].button.color.get()).isEqualTo(appliedOptions.topBar.leftButtonColor.get())
805
+ val leftCaptor = argumentCaptor<List<ButtonOptions>>()
806
+ verify(topBarController).mergeLeftButtonsOptions(any(),leftCaptor.capture(), any())
807
+ assertThat(leftCaptor.firstValue[0].color.get()).isEqualTo(appliedOptions.topBar.leftButtonColor.get())
802
808
  assertThat(leftCaptor.firstValue[0]).isNotEqualTo(leftButton)
803
809
  }
804
810
 
@@ -816,15 +822,15 @@ class StackPresenterTest : BaseTest() {
816
822
  options2.topBar.buttons.left = ArrayList(listOf(leftButton))
817
823
 
818
824
  uut.mergeChildOptions(options2, resolvedOptions, parent, child)
819
- val rightCaptor = argumentCaptor<List<ButtonController>>()
820
- verify(topBarController).mergeRightButtons(rightCaptor.capture(), any())
821
- assertThat(rightCaptor.firstValue[0].button.color.get()).isEqualTo(resolvedOptions.topBar.rightButtonColor.get())
822
- assertThat(rightCaptor.firstValue[1].button.color.get()).isEqualTo(resolvedOptions.topBar.rightButtonColor.get())
825
+ val rightCaptor = argumentCaptor<List<ButtonOptions>>()
826
+ verify(topBarController).mergeRightButtonsOptions(any(),rightCaptor.capture(), any())
827
+ assertThat(rightCaptor.firstValue[0].color.get()).isEqualTo(resolvedOptions.topBar.rightButtonColor.get())
828
+ assertThat(rightCaptor.firstValue[1].color.get()).isEqualTo(resolvedOptions.topBar.rightButtonColor.get())
823
829
  assertThat(rightCaptor.firstValue[0]).isNotEqualTo(rightButton1)
824
830
  assertThat(rightCaptor.firstValue[1]).isNotEqualTo(rightButton2)
825
- val leftCaptor = argumentCaptor<List<ButtonController>>()
826
- verify(topBarController).mergeLeftButtons(leftCaptor.capture(), any())
827
- assertThat(leftCaptor.firstValue[0].button.color.get()).isEqualTo(resolvedOptions.topBar.leftButtonColor.get())
831
+ val leftCaptor = argumentCaptor<List<ButtonOptions>>()
832
+ verify(topBarController).mergeLeftButtonsOptions(any(),leftCaptor.capture(), any())
833
+ assertThat(leftCaptor.firstValue[0].color.get()).isEqualTo(resolvedOptions.topBar.leftButtonColor.get())
828
834
  assertThat(leftCaptor.firstValue[0]).isNotEqualTo(leftButton)
829
835
  }
830
836
 
@@ -834,10 +840,10 @@ class StackPresenterTest : BaseTest() {
834
840
  options.topBar.buttons.right = ArrayList(listOf(textBtn1))
835
841
  options.topBar.buttons.left = ArrayList(listOf(textBtn1))
836
842
  uut.applyChildOptions(options, parent, child)
837
- val rightCaptor = argumentCaptor<List<ButtonController>>()
838
- val leftCaptor = argumentCaptor<List<ButtonController>>()
839
- verify(topBarController).applyRightButtons(rightCaptor.capture())
840
- verify(topBarController).applyLeftButtons(leftCaptor.capture())
843
+ val rightCaptor = argumentCaptor<List<ButtonOptions>>()
844
+ val leftCaptor = argumentCaptor<List<ButtonOptions>>()
845
+ verify(topBarController).applyRightButtonsOptions(any(),rightCaptor.capture(),any())
846
+ verify(topBarController).applyLeftButtonsOptions(any(),leftCaptor.capture(),any())
841
847
  assertThat(rightCaptor.firstValue.size).isOne()
842
848
  assertThat(leftCaptor.firstValue.size).isOne()
843
849
  }
@@ -939,7 +945,7 @@ class StackPresenterTest : BaseTest() {
939
945
  statusBar.drawBehind = Bool(true)
940
946
  }
941
947
  Mockito.`when`(child.resolveCurrentOptions()).thenReturn(options)
942
- mockStatusBarUtils(statusBarHeight, statusBarHeightDp) {
948
+ mockSystemUiUtils(statusBarHeight, statusBarHeightDp) {
943
949
  uut.applyChildOptions(Options.EMPTY.copy().apply {
944
950
  topBar.height = Number(topBarHeightDp)
945
951
  }, parent, child)
@@ -955,7 +961,7 @@ class StackPresenterTest : BaseTest() {
955
961
  val statusBarHeightDp = 20
956
962
  val topBarHeightDp = 100
957
963
 
958
- mockStatusBarUtils(statusBarHeight, statusBarHeightDp) {
964
+ mockSystemUiUtils(statusBarHeight, statusBarHeightDp) {
959
965
  uut.mergeChildOptions(Options.EMPTY.copy().apply {
960
966
  topBar.height = Number(topBarHeightDp)
961
967
  statusBar.drawBehind = Bool(true)
@@ -972,7 +978,7 @@ class StackPresenterTest : BaseTest() {
972
978
  val statusBarHeightDp = 20
973
979
  val topBarHeightDp = 100
974
980
 
975
- mockStatusBarUtils(statusBarHeight, statusBarHeightDp) {
981
+ mockSystemUiUtils(statusBarHeight, statusBarHeightDp) {
976
982
  uut.mergeChildOptions(Options.EMPTY.copy().apply {
977
983
  topBar.height = Number(topBarHeightDp)
978
984
  statusBar.drawBehind = Bool(false)
@@ -1022,6 +1028,7 @@ class StackPresenterTest : BaseTest() {
1022
1028
  assertThat((topBar.layoutParams as ViewGroup.MarginLayoutParams).topMargin).isEqualTo(10)
1023
1029
  }
1024
1030
 
1031
+ private fun getCurrentChild()=parent.currentChild
1025
1032
  private fun assertTopBarOptions(options: Options, t: Int) {
1026
1033
  if (options.topBar.title.component.hasValue()) {
1027
1034
  verify(topBar, never()).title = any()