|
1 | 1 | import * as React from 'react' |
2 | 2 | import TestRenderer from 'react-test-renderer' |
3 | 3 | import { Input } from '../../src' |
| 4 | +import { last } from './utils' |
4 | 5 |
|
5 | 6 | test('<Input />', () => { |
6 | 7 | const renderFn = jest.fn().mockReturnValue(null) |
7 | | - TestRenderer.create(<Input render={renderFn} />) |
8 | | - // TODO |
| 8 | + TestRenderer.create(<Input initial="init" render={renderFn} />) |
| 9 | + const lastCalled = () => last(renderFn.mock.calls)[0] |
| 10 | + |
| 11 | + expect(renderFn).toHaveBeenCalledTimes(1) |
| 12 | + expect(lastCalled().value).toEqual('init') |
| 13 | + expect(lastCalled().bind.value).toEqual('init') |
| 14 | + |
| 15 | + lastCalled().set('value2') |
| 16 | + expect(renderFn).toHaveBeenCalledTimes(2) |
| 17 | + expect(lastCalled().value).toEqual('value2') |
| 18 | + expect(lastCalled().bind.value).toEqual('value2') |
| 19 | + |
| 20 | + lastCalled().bind.onChange({ target: { value: 'value3' } }) |
| 21 | + expect(renderFn).toHaveBeenCalledTimes(3) |
| 22 | + expect(lastCalled().value).toEqual('value3') |
| 23 | + expect(lastCalled().bind.value).toEqual('value3') |
| 24 | +}) |
| 25 | + |
| 26 | +test('<Input onChange />', () => { |
| 27 | + const renderFn = jest.fn().mockReturnValue(null) |
| 28 | + const onChangeFn = jest.fn() |
| 29 | + const lastCalled = () => last(renderFn.mock.calls)[0] |
| 30 | + TestRenderer.create(<Input onChange={onChangeFn} render={renderFn} />) |
| 31 | + |
| 32 | + expect(onChangeFn).toHaveBeenCalledTimes(0) |
| 33 | + |
| 34 | + lastCalled().set('value') |
| 35 | + expect(onChangeFn).toHaveBeenCalledTimes(1) |
| 36 | + expect(onChangeFn).lastCalledWith({ value: 'value' }) |
9 | 37 | }) |
0 commit comments