import { View } from 'react-native'; import { ContentsquareModule } from '../../core/nativeModules'; import { hasOnlyOneChild, initComponents, mergeCallbacks, } from '../../utils/utils'; jest.mock('../../core/nativeModules', () => ({ ContentsquareModule: { initComponents: jest.fn(), }, })); jest.mock('react-native', () => ({ Platform: { constants: { reactNativeVersion: { major: 0, minor: 64, patch: 3, }, }, }, })); jest.mock('../../../package.json', () => ({ version: '1.2.3', })); describe('initComponents', () => { it('should initialize components with correct parameters', () => { initComponents(); const expectedReactNativeVersion = '0.64.3'; expect(ContentsquareModule.initComponents).toHaveBeenCalledWith({ xpf_type: 'reactnative', xpf_version: expectedReactNativeVersion, xpf_bridge_version: '1.2.3', }); expect(ContentsquareModule.initComponents).toHaveBeenCalledTimes(1); }); }); describe('hasOnlyOneChild', () => { it('should return true if there is exactly one child', () => { const singleChild = ; const result = hasOnlyOneChild(singleChild); expect(result).toBe(true); }); it('should return false if there are multiple children', () => { const multipleChildren = [ Child 1, Child 2, ]; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - Testing invalid input with multiple elements const result = hasOnlyOneChild(multipleChildren); expect(result).toBe(false); }); it('should return false if there are no children', () => { const result = hasOnlyOneChild(undefined); expect(result).toBe(false); }); }); describe('mergeCallbacks', () => { it('should call both internal and user callbacks', () => { const internalCallback = jest.fn(); const userCallback = jest.fn(); const mergedCallback = mergeCallbacks(internalCallback, userCallback); mergedCallback('arg1', 'arg2'); expect(internalCallback).toHaveBeenCalledWith('arg1', 'arg2'); expect(userCallback).toHaveBeenCalledWith('arg1', 'arg2'); }); it('should call only internal callback if user callback is not provided', () => { const internalCallback = jest.fn(); const mergedCallback = mergeCallbacks(internalCallback, undefined); mergedCallback('arg1', 'arg2'); expect(internalCallback).toHaveBeenCalledWith('arg1', 'arg2'); }); });