diff --git a/src/index.ts b/src/index.ts index 06d2395..8e45763 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,6 +3,7 @@ import { ContextType } from 'react'; import connectContext, { connectContextFactory, useConnectedContextFactory, mergedConnectContextFactory, useMergedConnectedContextFactory } from './connectContext'; import createContextProvider from './createContextProvider'; import createMergedStore from './createMergedStore'; +import { withMockProvider } from './testUtils'; export default createContextProvider; export { @@ -13,4 +14,5 @@ export { useMergedConnectedContextFactory, createMergedStore, ContextType, + withMockProvider, }; diff --git a/src/testUtils.tsx b/src/testUtils.tsx new file mode 100644 index 0000000..69263d0 --- /dev/null +++ b/src/testUtils.tsx @@ -0,0 +1,18 @@ +import React from 'react'; + +import { getProviderContext } from './createContextProvider'; +import { KeyValue } from './typings'; + +function withMockProvider(Provider: any, Component: React.ReactNode) { + const Context: React.Context = getProviderContext(Provider); + + return ({ state = {}, actions = {} }: { state: KeyValue, actions: KeyValue }) => ( + + {Component} + + ); +} + +export { + withMockProvider, +}; diff --git a/src/typings.d.ts b/src/typings.d.ts index 1bfa061..d6bb948 100644 --- a/src/typings.d.ts +++ b/src/typings.d.ts @@ -12,7 +12,8 @@ export type ActionCreators = { [key: string]: Action; }; -export type CustomProvider = React.ComponentType | React.FC; +export type CustomComponent = React.ComponentType | React.FC; +export type CustomProvider = CustomComponent; export type CreateContextProviderReturn = [ CustomProvider, @@ -44,7 +45,7 @@ export type ConnectContextOptions = { afterMerge?: AfterMergeCallback; } -export type ConnectContextFactory = (Component: React.ComponentType | React.FC, options: ConnectContextOptions) => React.FunctionComponent; +export type ConnectContextFactory = (Component: CustomComponent, options: ConnectContextOptions) => React.FunctionComponent; export type ProviderCollection = CustomProvider[] | {[key: string]: CustomProvider} export type ContextCollection = React.Context[] | {[key: string]: React.Context} \ No newline at end of file