import FeatureFlagManager from '../../core/featureFlags/featureFlagManager'; import Logger from '../../core/logging/logger'; import { ErrorAnalysisModule } from '../../core/nativeModules'; import { ErrorAnalysis } from '../../error/ErrorAnalysis'; jest.mock('../../core/featureFlags/featureFlagManager', () => ({ featureFlags: { crashReporter: true, // Default value for tests; override as needed }, })); jest.mock('../../core/logging/logger', () => ({ warn: jest.fn(), })); jest.mock('../../core/nativeModules', () => ({ ErrorAnalysisModule: { setURLMaskingPatterns: jest.fn(), triggerNativeCrash: jest.fn(), }, })); describe('ErrorAnalysis', () => { const { featureFlags } = FeatureFlagManager; const { setURLMaskingPatterns, triggerNativeCrash } = ErrorAnalysisModule; beforeEach(() => { jest.clearAllMocks(); }); describe('setURLMaskingPatterns', () => { it('should call ErrorAnalysisModule.setURLMaskingPatterns with the correct patterns', () => { const patterns = ['https://example.com', 'https://test.com']; ErrorAnalysis.setURLMaskingPatterns(patterns); expect(setURLMaskingPatterns).toHaveBeenCalledWith(patterns); expect(setURLMaskingPatterns).toHaveBeenCalledTimes(1); }); }); describe('triggerNativeCrash', () => { it('should call ErrorAnalysisModule.triggerNativeCrash when crashReporter is enabled', () => { featureFlags.crashReporter = true; ErrorAnalysis.triggerNativeCrash(); expect(triggerNativeCrash).toHaveBeenCalledTimes(1); expect(Logger.warn).not.toHaveBeenCalled(); }); it('should log a warning when crashReporter is disabled', () => { featureFlags.crashReporter = false; ErrorAnalysis.triggerNativeCrash(); expect(triggerNativeCrash).not.toHaveBeenCalled(); expect(Logger.warn).toHaveBeenCalledWith( 'The Crash Reporter feature is disabled.' ); }); }); });