react-day-picker
Version:
Customizable Date Picker for React
46 lines (40 loc) • 1.58 kB
text/typescript
import { act } from 'react-dom/test-utils';
import { renderDayPickerHook } from 'test/render';
import { useControlledValue } from './useControlledValue';
function renderHook(defaultValue: string, controlledValue: string | undefined) {
return renderDayPickerHook(() =>
useControlledValue<string>(defaultValue, controlledValue)
);
}
describe('when the value is controlled', () => {
const defaultValue = 'foo'; // not controlled
const controlledValue = 'bar'; // now controlled
test('should return the controlled value', () => {
const result = renderHook(defaultValue, controlledValue);
expect(result.current[0]).toBe(controlledValue);
});
describe('when setting a new value', () => {
const newValue = 'taz';
test('should return the controlled value instead', () => {
const result = renderHook(defaultValue, controlledValue);
act(() => result.current[1](newValue));
expect(result.current[0]).toBe(controlledValue);
});
});
});
describe('when the value is not controlled', () => {
const defaultValue = 'foo';
const controlledValue = undefined;
test('should return the value', () => {
const result = renderHook(defaultValue, controlledValue);
expect(result.current[0]).toBe(defaultValue);
});
describe('when setting a new value', () => {
const newValue = 'bar';
test('should return the new value', async () => {
const result = renderHook(defaultValue, controlledValue);
await act(() => result.current[1](newValue));
expect(result.current[0]).toBe(newValue);
});
});
});