Skip to content

Commit 4d51f7c

Browse files
committed
test: More test case
1 parent 97ca50a commit 4d51f7c

File tree

5 files changed

+45
-23
lines changed

5 files changed

+45
-23
lines changed

examples/panel.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,23 @@ export default () => {
7575

7676
<div style={{ margin: '0 8px' }}>
7777
<h3>Time</h3>
78-
<PickerPanel<Moment> {...sharedProps} locale={jaJP} mode="time" />
78+
<PickerPanel<Moment> {...sharedProps} locale={jaJP} picker="time" />
79+
</div>
80+
<div style={{ margin: '0 8px' }}>
81+
<h3>Uncontrolled</h3>
82+
<PickerPanel<Moment>
83+
{...sharedProps}
84+
locale={jaJP}
85+
value={undefined}
86+
picker="time"
87+
/>
7988
</div>
8089
<div style={{ margin: '0 8px' }}>
8190
<h3>Time AM/PM</h3>
8291
<PickerPanel<Moment>
8392
{...sharedProps}
8493
locale={jaJP}
85-
mode="time"
94+
picker="time"
8695
showTime={{
8796
use12Hours: true,
8897
showSecond: false,

src/PickerPanel.tsx

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -178,19 +178,13 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
178178
// Handle init logic
179179
const initRef = React.useRef(true);
180180

181-
// Inner value
182-
const [innerValue, setInnerValue] = React.useState(() => {
183-
if (value !== undefined) {
184-
return value;
185-
}
186-
if (defaultValue !== undefined) {
187-
return defaultValue;
188-
}
189-
return null;
181+
// Value
182+
const [mergedValue, setInnerValue] = useMergedState({
183+
value,
184+
defaultValue,
185+
defaultStateValue: null,
190186
});
191187

192-
const mergedValue = value !== undefined ? value : innerValue;
193-
194188
// View date control
195189
const [viewDate, setInnerViewDate] = useMergedState<
196190
DateType | null,
@@ -429,13 +423,13 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
429423
rangesNode = getRanges({
430424
prefixCls,
431425
needConfirmButton,
432-
okDisabled: !value,
426+
okDisabled: !mergedValue,
433427
locale,
434428
onOk: () => {
435-
if (value) {
436-
triggerSelect(value, 'submit', true);
429+
if (mergedValue) {
430+
triggerSelect(mergedValue, 'submit', true);
437431
if (onOk) {
438-
onOk(value);
432+
onOk(mergedValue);
439433
}
440434
}
441435
},

tests/panel.spec.tsx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,4 +400,19 @@ describe('Picker.Panel', () => {
400400
});
401401
});
402402
});
403+
404+
it('onOk to trigger', () => {
405+
const onOk = jest.fn();
406+
const wrapper = mount(<MomentPickerPanel picker="time" onOk={onOk} />);
407+
wrapper
408+
.find('.rc-picker-time-panel-column')
409+
.first()
410+
.find('.rc-picker-time-panel-cell')
411+
.at(3)
412+
.simulate('click');
413+
414+
expect(onOk).not.toHaveBeenCalled();
415+
wrapper.confirmOK();
416+
expect(isSame(onOk.mock.calls[0][0], '1990-09-03 03:00:00')).toBeTruthy();
417+
});
403418
});

tests/picker.spec.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,15 +387,20 @@ describe('Picker.Basic', () => {
387387

388388
expect(wrapper.find(finalPanel).length).toBeTruthy();
389389

390-
wrapper.confirmOK();
390+
if (showTime) {
391+
wrapper.confirmOK();
392+
}
391393
wrapper.closePicker();
392394
expect(isSame(onChange.mock.calls[0][0], '2019-08-18')).toBeTruthy();
393395
});
394396
});
395397

396398
it('time', () => {
397399
const onChange = jest.fn();
398-
const wrapper = mount(<MomentPicker picker="time" onChange={onChange} />);
400+
const onOk = jest.fn();
401+
const wrapper = mount(
402+
<MomentPicker picker="time" onChange={onChange} onOk={onOk} />,
403+
);
399404
wrapper.openPicker();
400405

401406
function selectColumn(colIndex: number, rowIndex: number) {
@@ -411,7 +416,9 @@ describe('Picker.Basic', () => {
411416
selectColumn(1, 22);
412417
selectColumn(2, 33);
413418

419+
expect(onOk).not.toHaveBeenCalled();
414420
wrapper.confirmOK();
421+
expect(onOk).toHaveBeenCalled();
415422
expect(
416423
isSame(onChange.mock.calls[0][0], '1990-09-03 13:22:33', 'second'),
417424
).toBeTruthy();

tests/setup.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,7 @@ Object.assign(Enzyme.ReactWrapper.prototype, {
2424
.simulate('blur');
2525
},
2626
confirmOK() {
27-
const okBtn = this.find('.rc-picker-ok > *');
28-
if (okBtn.length) {
29-
okBtn.simulate('click');
30-
}
27+
this.find('.rc-picker-ok > *').simulate('click');
3128
},
3229
isOpen() {
3330
const openDiv = this.find('.rc-picker-dropdown').hostNodes();

0 commit comments

Comments
 (0)