@snipsonian/observable-state
Version:
Observable-state snippets (redux-like)
25 lines (24 loc) • 1.16 kB
TypeScript
import { IBaseIntegrationTester } from '@snipsonian/core/es/typings/testing';
import { IRestHandlerMock } from '@snipsonian/axios/es/testing/mockRestServer';
import { Action } from '../types';
declare type TCallback<CallbackProps> = (callbackProps: CallbackProps) => void;
export interface IStateIntegrationTester<State> extends IBaseIntegrationTester {
given: (props: IGivenProps, callback?: TCallback<IGivenCallbackProps<State>>) => void;
when: <ResultData = any>(actionOrToBeExecuted: TActionOrToBeExecuted<ResultData>) => Promise<ResultData>;
then: (callback?: TCallback<IThenCallbackProps<State>>) => void;
}
interface IGivenProps {
keepState?: boolean;
restHandlerMocks?: IRestHandlerMock[];
}
interface IGivenCallbackProps<State> {
setupActions: (...actionsToSetup: Action[]) => void;
setupState: (stateUpdater: (draftState: State) => void) => void;
getState: () => State;
}
export declare type TActionOrToBeExecuted<ResultData = any> = Action | TToBeExecuted<ResultData>;
declare type TToBeExecuted<ResultData> = () => Promise<ResultData>;
interface IThenCallbackProps<State> {
getState: () => State;
}
export {};