react-native-navigation的迁移库

EventsRegistry.test.tsx 6.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. import { EventsRegistry } from './EventsRegistry';
  2. import { NativeEventsReceiver } from '../adapters/NativeEventsReceiver.mock';
  3. import { CommandsObserver } from './CommandsObserver';
  4. import { UniqueIdProvider } from '../adapters/UniqueIdProvider';
  5. import { NavigationComponent } from '../interfaces/NavigationComponent';
  6. import { NavigationComponentListener } from 'react-native-navigation/interfaces/NavigationComponentListener';
  7. describe('EventsRegistry', () => {
  8. let uut: EventsRegistry;
  9. const mockNativeEventsReceiver = new NativeEventsReceiver();
  10. let commandsObserver: CommandsObserver;
  11. const mockScreenEventsRegistry = {} as any;
  12. beforeEach(() => {
  13. commandsObserver = new CommandsObserver(new UniqueIdProvider());
  14. uut = new EventsRegistry(mockNativeEventsReceiver, commandsObserver, mockScreenEventsRegistry);
  15. });
  16. it('exposes appLaunched event', () => {
  17. const subscription = {};
  18. const cb = jest.fn();
  19. mockNativeEventsReceiver.registerAppLaunchedListener.mockReturnValueOnce(subscription);
  20. const result = uut.registerAppLaunchedListener(cb);
  21. expect(result).toBe(subscription);
  22. expect(mockNativeEventsReceiver.registerAppLaunchedListener).toHaveBeenCalledTimes(1);
  23. expect(mockNativeEventsReceiver.registerAppLaunchedListener).toHaveBeenCalledWith(cb);
  24. });
  25. it('delegates didAppear to nativeEventsReceiver', () => {
  26. const cb = jest.fn();
  27. uut.registerComponentDidAppearListener(cb);
  28. expect(mockNativeEventsReceiver.registerComponentDidAppearListener).toHaveBeenCalledTimes(1);
  29. expect(mockNativeEventsReceiver.registerComponentDidAppearListener).toHaveBeenCalledWith(cb);
  30. });
  31. it('delegates didDisappear to nativeEventsReceiver', () => {
  32. const cb = jest.fn();
  33. uut.registerComponentDidDisappearListener(cb);
  34. expect(mockNativeEventsReceiver.registerComponentDidDisappearListener).toHaveBeenCalledTimes(1);
  35. expect(mockNativeEventsReceiver.registerComponentDidDisappearListener).toHaveBeenCalledWith(cb);
  36. });
  37. it('delegates commandCompleted to nativeEventsReceiver', () => {
  38. const cb = jest.fn();
  39. uut.registerCommandCompletedListener(cb);
  40. expect(mockNativeEventsReceiver.registerCommandCompletedListener).toHaveBeenCalledTimes(1);
  41. expect(mockNativeEventsReceiver.registerCommandCompletedListener).toHaveBeenCalledWith(cb);
  42. });
  43. it('delegates BottomTabsSelected to nativeEventsReceiver', () => {
  44. const cb = jest.fn();
  45. uut.registerBottomTabSelectedListener(cb);
  46. expect(mockNativeEventsReceiver.registerBottomTabSelectedListener).toHaveBeenCalledTimes(1);
  47. expect(mockNativeEventsReceiver.registerBottomTabSelectedListener).toHaveBeenCalledWith(cb);
  48. });
  49. it('delegates navigationButtonPressed to nativeEventsReceiver', () => {
  50. const cb = jest.fn();
  51. uut.registerNavigationButtonPressedListener(cb);
  52. expect(mockNativeEventsReceiver.registerNavigationButtonPressedListener).toHaveBeenCalledTimes(1);
  53. expect(mockNativeEventsReceiver.registerNavigationButtonPressedListener).toHaveBeenCalledWith(cb);
  54. });
  55. it('delegates modalDismissed to nativeEventsReceiver', () => {
  56. const cb = jest.fn();
  57. uut.registerModalDismissedListener(cb);
  58. expect(mockNativeEventsReceiver.registerModalDismissedListener).toHaveBeenCalledTimes(1);
  59. expect(mockNativeEventsReceiver.registerModalDismissedListener).toHaveBeenCalledWith(cb);
  60. });
  61. it('delegates modalAttemptedToDimiss to nativeEventsReceiver', () => {
  62. const cb = jest.fn();
  63. uut.registerModalAttemptedToDismissListener(cb);
  64. expect(mockNativeEventsReceiver.registerModalAttemptedToDismissListener).toHaveBeenCalledTimes(1);
  65. expect(mockNativeEventsReceiver.registerModalAttemptedToDismissListener).toHaveBeenCalledWith(cb);
  66. });
  67. it('delegates searchBarUpdated to nativeEventsReceiver', () => {
  68. const cb = jest.fn();
  69. uut.registerSearchBarUpdatedListener(cb);
  70. expect(mockNativeEventsReceiver.registerSearchBarUpdatedListener).toHaveBeenCalledTimes(1);
  71. expect(mockNativeEventsReceiver.registerSearchBarUpdatedListener).toHaveBeenCalledWith(cb);
  72. });
  73. it('delegates searchBarCancelPressed to nativeEventsReceiver', () => {
  74. const cb = jest.fn();
  75. uut.registerSearchBarCancelPressedListener(cb);
  76. expect(mockNativeEventsReceiver.registerSearchBarCancelPressedListener).toHaveBeenCalledTimes(1);
  77. expect(mockNativeEventsReceiver.registerSearchBarCancelPressedListener).toHaveBeenCalledWith(cb);
  78. });
  79. it('delegates previewCompleted to nativeEventsReceiver', () => {
  80. const cb = jest.fn();
  81. uut.registerPreviewCompletedListener(cb);
  82. expect(mockNativeEventsReceiver.registerPreviewCompletedListener).toHaveBeenCalledTimes(1);
  83. expect(mockNativeEventsReceiver.registerPreviewCompletedListener).toHaveBeenCalledWith(cb);
  84. });
  85. it('delegates registerCommandListener to commandObserver', () => {
  86. const cb = jest.fn();
  87. const result = uut.registerCommandListener(cb);
  88. expect(result).toBeDefined();
  89. commandsObserver.notify('theCommandName', { x: 1 });
  90. expect(cb).toHaveBeenCalledTimes(1);
  91. expect(cb).toHaveBeenCalledWith('theCommandName', { x: 1 });
  92. });
  93. it('registerCommandListener unregister', () => {
  94. const cb = jest.fn();
  95. const result = uut.registerCommandListener(cb);
  96. result.remove();
  97. commandsObserver.notify('theCommandName', { x: 1 });
  98. expect(cb).not.toHaveBeenCalled();
  99. });
  100. it(`delegates bindComponent to ComponentObserver`, () => {
  101. const subscription = {};
  102. mockScreenEventsRegistry.bindComponent = jest.fn();
  103. mockScreenEventsRegistry.bindComponent.mockReturnValueOnce(subscription);
  104. expect(uut.bindComponent({} as NavigationComponent<any>)).toEqual(subscription);
  105. });
  106. it(`delegates registerComponentListener to ComponentObserver`, () => {
  107. const subscription = {};
  108. mockScreenEventsRegistry.registerComponentListener = jest.fn();
  109. mockScreenEventsRegistry.registerComponentListener.mockReturnValueOnce(subscription);
  110. expect(uut.registerComponentListener({} as NavigationComponentListener, 'componentId')).toEqual(subscription);
  111. });
  112. it('delegates screenPopped to nativeEventsReceiver', () => {
  113. const cb = jest.fn();
  114. uut.registerScreenPoppedListener(cb);
  115. expect(mockNativeEventsReceiver.registerScreenPoppedListener).toHaveBeenCalledTimes(1);
  116. expect(mockNativeEventsReceiver.registerScreenPoppedListener).toHaveBeenCalledWith(cb);
  117. });
  118. });