import { ContentsquareModule } from '../../core/nativeModules'; import { addDynamicVar, pauseTracking, resumeTracking, stop } from '../../tracking/csqTracking'; // Mock nativeModules wrapper jest.mock('../../core/nativeModules', () => ({ ContentsquareModule: { resumeTracking: jest.fn(), pauseTracking: jest.fn(), stop: jest.fn(), addDynamicStringVar: jest.fn(), addDynamicNumberVar: jest.fn(), }, })); describe('Tracking Functions', () => { beforeEach(() => { jest.clearAllMocks(); }); describe('resumeTracking', () => { it('should call ContentsquareModule.resumeTracking', () => { resumeTracking(); expect(ContentsquareModule.resumeTracking).toHaveBeenCalledTimes(1); }); }); describe('pauseTracking', () => { it('should call ContentsquareModule.pauseTracking', () => { pauseTracking(); expect(ContentsquareModule.pauseTracking).toHaveBeenCalledTimes(1); }); }); describe('stop', () => { it('should call ContentsquareModule.stop', () => { stop(); expect(ContentsquareModule.stop).toHaveBeenCalledTimes(1); }); }); describe('addDynamicVar', () => { it('should call addDynamicStringVar for a valid string value', () => { const key = 'key1'; const value = 'stringValue'; addDynamicVar(key, value); expect(ContentsquareModule.addDynamicStringVar).toHaveBeenCalledWith( key, value ); expect(ContentsquareModule.addDynamicNumberVar).not.toHaveBeenCalled(); }); it('should call addDynamicNumberVar for a valid integer value', () => { const key = 'key2'; const value = 42; addDynamicVar(key, value); expect(ContentsquareModule.addDynamicNumberVar).toHaveBeenCalledWith( key, value ); expect(ContentsquareModule.addDynamicStringVar).not.toHaveBeenCalled(); }); it('should call onError callback for invalid value type', () => { const key = 'key3'; const value = -1; // Invalid integer value const onError = jest.fn(); addDynamicVar(key, value, onError); expect(onError).toHaveBeenCalledWith( new TypeError( 'The value of the DynamicVar should be either a string or an unsigned integer' ) ); expect(ContentsquareModule.addDynamicStringVar).not.toHaveBeenCalled(); expect(ContentsquareModule.addDynamicNumberVar).not.toHaveBeenCalled(); }); it('should log an error for invalid value type if no onError callback is provided', () => { const key = 'key4'; const value = -10; // Invalid integer value console.log = jest.fn(); addDynamicVar(key, value); expect(console.log).toHaveBeenCalledWith( 'The value of the DynamicVar should be either a string or an unsigned integer' ); expect(ContentsquareModule.addDynamicStringVar).not.toHaveBeenCalled(); expect(ContentsquareModule.addDynamicNumberVar).not.toHaveBeenCalled(); }); }); });