react-native-navigation的迁移库

EventsRegistry.test.tsx 5.0KB

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