react-native-navigation
Version:
React Native Navigation - truly native navigation for iOS and Android
131 lines (130 loc) • 6.55 kB
JavaScript
;
import { EventsRegistry } from "./EventsRegistry.js";
import { NativeEventsReceiver } from "../adapters/NativeEventsReceiver.mock.js";
import { CommandsObserver } from "./CommandsObserver.js";
import { UniqueIdProvider } from "../adapters/UniqueIdProvider.js";
describe('EventsRegistry', () => {
let uut;
const mockNativeEventsReceiver = new NativeEventsReceiver();
let commandsObserver;
const mockScreenEventsRegistry = {};
beforeEach(() => {
commandsObserver = new CommandsObserver(new UniqueIdProvider());
uut = new EventsRegistry(mockNativeEventsReceiver, commandsObserver, mockScreenEventsRegistry);
});
it('exposes appLaunched event', () => {
const subscription = {};
const cb = jest.fn();
mockNativeEventsReceiver.registerAppLaunchedListener.mockReturnValueOnce(subscription);
const result = uut.registerAppLaunchedListener(cb);
expect(result).toBe(subscription);
expect(mockNativeEventsReceiver.registerAppLaunchedListener).toHaveBeenCalledTimes(1);
expect(mockNativeEventsReceiver.registerAppLaunchedListener).toHaveBeenCalledWith(cb);
});
it('delegates willAppear to nativeEventsReceiver', () => {
const cb = jest.fn();
uut.registerComponentWillAppearListener(cb);
expect(mockNativeEventsReceiver.registerComponentWillAppearListener).toHaveBeenCalledTimes(1);
expect(mockNativeEventsReceiver.registerComponentWillAppearListener).toHaveBeenCalledWith(cb);
});
it('delegates didAppear to nativeEventsReceiver', () => {
const cb = jest.fn();
uut.registerComponentDidAppearListener(cb);
expect(mockNativeEventsReceiver.registerComponentDidAppearListener).toHaveBeenCalledTimes(1);
expect(mockNativeEventsReceiver.registerComponentDidAppearListener).toHaveBeenCalledWith(cb);
});
it('delegates didDisappear to nativeEventsReceiver', () => {
const cb = jest.fn();
uut.registerComponentDidDisappearListener(cb);
expect(mockNativeEventsReceiver.registerComponentDidDisappearListener).toHaveBeenCalledTimes(1);
expect(mockNativeEventsReceiver.registerComponentDidDisappearListener).toHaveBeenCalledWith(cb);
});
it('delegates commandCompleted to nativeEventsReceiver', () => {
const cb = jest.fn();
uut.registerCommandCompletedListener(cb);
expect(mockNativeEventsReceiver.registerCommandCompletedListener).toHaveBeenCalledTimes(1);
expect(mockNativeEventsReceiver.registerCommandCompletedListener).toHaveBeenCalledWith(cb);
});
it('delegates BottomTabsSelected to nativeEventsReceiver', () => {
const cb = jest.fn();
uut.registerBottomTabSelectedListener(cb);
expect(mockNativeEventsReceiver.registerBottomTabSelectedListener).toHaveBeenCalledTimes(1);
expect(mockNativeEventsReceiver.registerBottomTabSelectedListener).toHaveBeenCalledWith(cb);
});
it('delegates navigationButtonPressed to nativeEventsReceiver', () => {
const cb = jest.fn();
uut.registerNavigationButtonPressedListener(cb);
expect(mockNativeEventsReceiver.registerNavigationButtonPressedListener).toHaveBeenCalledTimes(1);
expect(mockNativeEventsReceiver.registerNavigationButtonPressedListener).toHaveBeenCalledWith(cb);
});
it('delegates modalDismissed to nativeEventsReceiver', () => {
const cb = jest.fn();
uut.registerModalDismissedListener(cb);
expect(mockNativeEventsReceiver.registerModalDismissedListener).toHaveBeenCalledTimes(1);
expect(mockNativeEventsReceiver.registerModalDismissedListener).toHaveBeenCalledWith(cb);
});
it('delegates modalAttemptedToDimiss to nativeEventsReceiver', () => {
const cb = jest.fn();
uut.registerModalAttemptedToDismissListener(cb);
expect(mockNativeEventsReceiver.registerModalAttemptedToDismissListener).toHaveBeenCalledTimes(1);
expect(mockNativeEventsReceiver.registerModalAttemptedToDismissListener).toHaveBeenCalledWith(cb);
});
it('delegates searchBarUpdated to nativeEventsReceiver', () => {
const cb = jest.fn();
uut.registerSearchBarUpdatedListener(cb);
expect(mockNativeEventsReceiver.registerSearchBarUpdatedListener).toHaveBeenCalledTimes(1);
expect(mockNativeEventsReceiver.registerSearchBarUpdatedListener).toHaveBeenCalledWith(cb);
});
it('delegates searchBarCancelPressed to nativeEventsReceiver', () => {
const cb = jest.fn();
uut.registerSearchBarCancelPressedListener(cb);
expect(mockNativeEventsReceiver.registerSearchBarCancelPressedListener).toHaveBeenCalledTimes(1);
expect(mockNativeEventsReceiver.registerSearchBarCancelPressedListener).toHaveBeenCalledWith(cb);
});
it('delegates previewCompleted to nativeEventsReceiver', () => {
const cb = jest.fn();
uut.registerPreviewCompletedListener(cb);
expect(mockNativeEventsReceiver.registerPreviewCompletedListener).toHaveBeenCalledTimes(1);
expect(mockNativeEventsReceiver.registerPreviewCompletedListener).toHaveBeenCalledWith(cb);
});
it('delegates registerCommandListener to commandObserver', () => {
const cb = jest.fn();
const result = uut.registerCommandListener(cb);
expect(result).toBeDefined();
commandsObserver.notify('theCommandName', {
x: 1
});
expect(cb).toHaveBeenCalledTimes(1);
expect(cb).toHaveBeenCalledWith('theCommandName', {
x: 1
});
});
it('registerCommandListener unregister', () => {
const cb = jest.fn();
const result = uut.registerCommandListener(cb);
result.remove();
commandsObserver.notify('theCommandName', {
x: 1
});
expect(cb).not.toHaveBeenCalled();
});
it(`delegates bindComponent to ComponentObserver`, () => {
const subscription = {};
mockScreenEventsRegistry.bindComponent = jest.fn();
mockScreenEventsRegistry.bindComponent.mockReturnValueOnce(subscription);
expect(uut.bindComponent({})).toEqual(subscription);
});
it(`delegates registerComponentListener to ComponentObserver`, () => {
const subscription = {};
mockScreenEventsRegistry.registerComponentListener = jest.fn();
mockScreenEventsRegistry.registerComponentListener.mockReturnValueOnce(subscription);
expect(uut.registerComponentListener({}, 'componentId')).toEqual(subscription);
});
it('delegates screenPopped to nativeEventsReceiver', () => {
const cb = jest.fn();
uut.registerScreenPoppedListener(cb);
expect(mockNativeEventsReceiver.registerScreenPoppedListener).toHaveBeenCalledTimes(1);
expect(mockNativeEventsReceiver.registerScreenPoppedListener).toHaveBeenCalledWith(cb);
});
});
//# sourceMappingURL=EventsRegistry.test.js.map