import { LogAdapter } from '../log' describe('LogAdapter', () => { describe('reportError', () => { it('forwards the error and context to the host callback', () => { const reportError = jest.fn() const adapter = new LogAdapter({ reportError }) const error = new Error('boom') const context = { scope: 'screen' as const, screenName: 'ConversationScreen' } adapter.reportError(error, context) expect(reportError).toHaveBeenCalledWith(error, context) }) it('fires even when the adapter is disabled', () => { const reportError = jest.fn() const adapter = new LogAdapter({ enabled: false, reportError }) adapter.reportError(new Error('boom')) expect(reportError).toHaveBeenCalledTimes(1) }) it('falls back to console.error when no host callback is configured', () => { const spy = jest.spyOn(console, 'error').mockImplementation(() => {}) const adapter = new LogAdapter() const error = new Error('boom') adapter.reportError(error, { scope: 'http' }) expect(spy).toHaveBeenCalledWith(error, { scope: 'http' }) spy.mockRestore() }) }) describe('info and error', () => { it('drops info and error calls when disabled', () => { const info = jest.fn() const error = jest.fn() const adapter = new LogAdapter({ enabled: false, info, error }) adapter.info('hi') adapter.error('bye') expect(info).not.toHaveBeenCalled() expect(error).not.toHaveBeenCalled() }) it('forwards info and error calls when enabled', () => { const info = jest.fn() const error = jest.fn() const adapter = new LogAdapter({ enabled: true, info, error }) adapter.info('hi', { a: 1 }) adapter.error('bye', { b: 2 }) expect(info).toHaveBeenCalledWith('hi', { a: 1 }) expect(error).toHaveBeenCalledWith('bye', { b: 2 }) }) }) })