|
1 | 1 | import React from 'react';
|
2 | 2 | import { ChangeEventHandler } from 'react';
|
3 | 3 | import { render } from '@testing-library/react';
|
4 |
| -import { renderHook, RenderHookResult } from '@testing-library/react-hooks'; |
| 4 | +import { RenderHookResult } from '@testing-library/react'; |
5 | 5 | import userEvent from '@testing-library/user-event';
|
6 | 6 |
|
| 7 | +import { act, renderHook } from '@leafygreen-ui/testing-lib'; |
| 8 | + |
7 | 9 | import { useControlledValue } from './useControlledValue';
|
8 | 10 |
|
9 | 11 | const errorSpy = jest.spyOn(console, 'error');
|
10 | 12 |
|
11 | 13 | const renderUseControlledValueHook = <T extends any>(
|
12 | 14 | ...[valueProp, callback, initial]: Parameters<typeof useControlledValue<T>>
|
13 |
| -): RenderHookResult<T, ReturnType<typeof useControlledValue<T>>> => { |
| 15 | +): RenderHookResult< |
| 16 | + ReturnType<typeof useControlledValue<T>>, |
| 17 | + typeof valueProp |
| 18 | +> => { |
14 | 19 | const result = renderHook(v => useControlledValue(v, callback, initial), {
|
15 | 20 | initialProps: valueProp,
|
16 | 21 | });
|
17 | 22 |
|
18 | 23 | return { ...result };
|
19 | 24 | };
|
20 | 25 |
|
21 |
| -describe('packages/hooks/useControlledValue', () => { |
| 26 | +describe('packages/date-picker/hooks/useControlledValue', () => { |
22 | 27 | beforeEach(() => {
|
23 | 28 | errorSpy.mockImplementation(() => {});
|
24 | 29 | });
|
@@ -109,7 +114,7 @@ describe('packages/hooks/useControlledValue', () => {
|
109 | 114 | test('setting value to undefined should keep the component controlled', () => {
|
110 | 115 | const { rerender, result } = renderUseControlledValueHook('apple');
|
111 | 116 | expect(result.current.isControlled).toBe(true);
|
112 |
| - rerender(undefined); |
| 117 | + act(() => rerender(undefined)); |
113 | 118 | expect(result.current.isControlled).toBe(true);
|
114 | 119 | });
|
115 | 120 |
|
@@ -144,8 +149,10 @@ describe('packages/hooks/useControlledValue', () => {
|
144 | 149 | });
|
145 | 150 |
|
146 | 151 | test('setValue updates the value', () => {
|
147 |
| - const { result } = renderUseControlledValueHook<string>(undefined); |
| 152 | + const { result, rerender } = |
| 153 | + renderUseControlledValueHook<string>(undefined); |
148 | 154 | result.current.setValue('banana');
|
| 155 | + rerender(); |
149 | 156 | expect(result.current.value).toBe('banana');
|
150 | 157 | });
|
151 | 158 | });
|
|
0 commit comments