Skip to content

Commit 9c3d9b1

Browse files
committed
Merge branch 'beta' into refactor/tests-proposal
2 parents 62f05ba + 3813b88 commit 9c3d9b1

File tree

3 files changed

+23
-12
lines changed

3 files changed

+23
-12
lines changed

src/core/index.ts

+11-7
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,18 @@ function resultContainer<TValue>(): ResultContainer<TValue> {
4040
}
4141
}
4242

43-
function createRenderHook<TProps, TResult, TOptions extends {}, TRenderer extends Renderer<TProps>>(
43+
function createRenderHook<
44+
TProps,
45+
TResult,
46+
TOptions extends object,
47+
TRenderer extends Renderer<TProps>
48+
>(
4449
createRenderer: CreateRenderer<TProps, TResult, TOptions, TRenderer>
45-
) {
46-
const renderHook = (
47-
callback: (props: TProps) => TResult,
48-
options: RenderHookOptions<TProps, TOptions> = {} as RenderHookOptions<TProps, TOptions>
49-
): RenderHook<TProps, TResult, TRenderer> => {
50+
): RenderHook<TProps, TResult, TOptions> {
51+
const renderHook: RenderHook<TProps, TResult, TOptions> = (
52+
callback,
53+
options = {} as RenderHookOptions<TProps, TOptions>
54+
) => {
5055
const { result, setValue, setError, addResolver } = resultContainer<TResult>()
5156
const renderProps = { callback, setValue, setError }
5257
let hookProps = options.initialProps
@@ -81,7 +86,6 @@ function createRenderHook<TProps, TResult, TOptions extends {}, TRenderer extend
8186
// This dummy usage works around that.
8287
renderHook.name // eslint-disable-line @typescript-eslint/no-unused-expressions
8388

84-
8589
return renderHook
8690
}
8791

src/types/index.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export type AsyncUtils = {
3838
waitForValueToChange: (selector: () => unknown, options?: WaitOptions) => Promise<void>
3939
}
4040

41-
export type RenderHook<
41+
export type RenderHookResult<
4242
TProps,
4343
TValue,
4444
TRenderer extends Renderer<TProps> = Renderer<TProps>
@@ -47,10 +47,17 @@ export type RenderHook<
4747
Omit<TRenderer, keyof Renderer<TProps>> &
4848
AsyncUtils
4949

50-
export type RenderHookOptions<TProps, TOptions extends {}> = TOptions & {
50+
export type RenderHookOptions<TProps, TOptions extends object> = TOptions & {
5151
initialProps?: TProps
5252
}
5353

54+
export interface RenderHook<TProps, TResult, TOptions extends object> {
55+
(
56+
callback: (props: TProps) => TResult,
57+
options?: RenderHookOptions<TProps, TOptions>
58+
): RenderHookResult<TProps, TResult>
59+
}
60+
5461
export interface Act {
5562
(callback: () => void | undefined): void
5663
(callback: () => Promise<void | undefined>): Promise<undefined>

src/types/react.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import { ComponentType } from 'react'
22

3-
import { RenderHook, RenderHookOptions, Act } from '.'
3+
import { RenderHookOptions, RenderHookResult, Act } from '.'
44

55
export type WrapperComponent<TProps> = ComponentType<TProps>
66

77
export type RendererOptions<TProps> = {
88
wrapper?: WrapperComponent<TProps>
99
}
1010

11-
export interface ReactHooksRenderer {
11+
export type ReactHooksRenderer = {
1212
renderHook: <TProps, TResult>(
1313
callback: (props: TProps) => TResult,
1414
options?: RenderHookOptions<TProps, RendererOptions<TProps>>
15-
) => RenderHook<TProps, TResult>
15+
) => RenderHookResult<TProps, TResult>
1616
act: Act
1717
cleanup: () => void
1818
addCleanup: (callback: () => Promise<void> | void) => () => void

0 commit comments

Comments
 (0)