react-native-navigation的迁移库

EventsRegistry.test.tsx 5.0KB

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