import React from 'react'; import {renderHook} from '@testing-library/react-hooks'; import {PerformanceProfilerUninitializedError} from '../../../exceptions'; import {DisabledStateController, StateControllerContextProvider, useStateController} from '../../../state-machine'; import {ErrorHandler, ErrorHandlerContextProvider} from '../../../utils'; describe('state-machine/controller/state-controller-context', () => { describe('useStateController', () => { it('provides the state controller instance available throught the context', () => { const mockStateController = { onSomeEvent: jest.fn(), } as any; const actualStateController = renderHook(() => useStateController(), { wrapper: function wrapper({children}) { return ( {children} ); }, }).result.current; expect(actualStateController).toBe(mockStateController); }); it('provides the fallback disabled state controller if none is available via the context', () => { const actualStateController = renderHook(() => useStateController(), { wrapper: function wrapper({children}) { return {children}; }, }).result.current; expect(actualStateController).toBeInstanceOf(DisabledStateController); }); it('reports a missing controller in the context to the error handler', () => { const errorHandler: ErrorHandler = jest.fn(); renderHook(() => useStateController(), { wrapper: function wrapper({children}) { return {children}; }, }); expect(errorHandler).toHaveBeenCalledTimes(1); expect(errorHandler).toHaveBeenCalledWith(expect.any(PerformanceProfilerUninitializedError)); }); }); });