Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/OptionList/useActive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export default (

React.useEffect(
() => {
if (open && !multiple) {
if (!multiple) {
setActiveValueCells(firstValueCells || []);
}
},
Expand Down
44 changes: 42 additions & 2 deletions tests/selector.spec.tsx
Original file line number Diff line number Diff line change
@@ -1,18 +1,58 @@
import React, { useState } from 'react';
import { fireEvent, render } from '@testing-library/react';
import { mount } from './enzyme';
import Cascader from '../src';
import { addressOptions } from './demoOptions';

// Mock `useActive` hook
jest.mock('../src/OptionList/useActive', () => (multiple: boolean, open: boolean) => {
Comment thread
wanpan11 marked this conversation as resolved.
// Pass to origin hooks
const originHook = jest.requireActual('../src/OptionList/useActive').default;
const [activeValueCells, setActiveValueCells] = originHook(multiple, open);

global.activeValueCells = activeValueCells;

return [activeValueCells, setActiveValueCells];
});

describe('Cascader.Selector', () => {
describe('clear all', () => {
it('single', () => {
const onChange = jest.fn();
const wrapper = mount(<Cascader value={['not', 'exist']} allowClear onChange={onChange} />);
const { container } = render(
<Cascader value={['not', 'exist']} allowClear onChange={onChange} />,
);

wrapper.find('.rc-cascader-clear-icon').simulate('mouseDown');
fireEvent.mouseDown(container.querySelector('.rc-cascader-clear-icon'));
expect(onChange).toHaveBeenCalledWith(undefined, undefined);
});

it('Should clear activeCells', () => {
const onChange = jest.fn();

const { container } = render(
<Cascader
allowClear
onChange={onChange}
options={[
{ label: 'Bamboo', value: 'bamboo', children: [{ label: 'Little', value: 'little' }] },
]}
/>,
);

// Open and select
fireEvent.mouseDown(container.querySelector('.rc-cascader-selector'));
expect(container.querySelector('.rc-cascader-open')).toBeTruthy();

fireEvent.click(container.querySelector('.rc-cascader-menu-item-content'));
fireEvent.click(container.querySelectorAll('.rc-cascader-menu-item-content')[1]);
expect(container.querySelector('.rc-cascader-open')).toBeFalsy();

// Clear
fireEvent.mouseDown(container.querySelector('.rc-cascader-clear-icon'));
expect(global.activeValueCells).toEqual([]);
});

it('multiple', () => {
const onChange = jest.fn();
const wrapper = mount(
Expand Down