import dayjs from 'dayjs'; import customParseFormat from 'dayjs/plugin/customParseFormat'; import React from 'react'; import ConfigProvider from '..'; import Alert from '../../alert'; import Anchor from '../../anchor'; import AutoComplete from '../../auto-complete'; import Avatar from '../../avatar'; import BackTop from '../../back-top'; import Badge from '../../badge'; import Breadcrumb from '../../breadcrumb'; import Button from '../../button'; import Calendar from '../../calendar'; import Card from '../../card'; import Carousel from '../../carousel'; import Cascader from '../../cascader'; import Checkbox from '../../checkbox'; import Collapse from '../../collapse'; import DatePicker from '../../date-picker'; import Divider from '../../divider'; import Drawer from '../../drawer'; import Dropdown from '../../dropdown'; import Empty from '../../empty'; import Form from '../../form'; import { Col, Row } from '../../grid'; import Input from '../../input'; import InputNumber from '../../input-number'; import Layout from '../../layout'; import List from '../../list'; import Menu from '../../menu'; import Modal from '../../modal'; import Pagination from '../../pagination'; import Popconfirm from '../../popconfirm'; import Popover from '../../popover'; import Progress from '../../progress'; import Radio from '../../radio'; import Rate from '../../rate'; import Select from '../../select'; import Skeleton from '../../skeleton'; import type { SliderTooltipProps } from '../../slider'; import Slider from '../../slider'; // eslint-disable-next-line import/no-named-as-default import Spin from '../../spin'; import Statistic from '../../statistic'; import Steps from '../../steps'; import Switch from '../../switch'; import type { ColumnsType } from '../../table'; import Table from '../../table'; import Tabs from '../../tabs'; import Tag from '../../tag'; import TimePicker from '../../time-picker'; import Timeline from '../../timeline'; import Tooltip from '../../tooltip'; import Transfer from '../../transfer'; import Tree from '../../tree'; import TreeSelect from '../../tree-select'; import Upload from '../../upload'; import { render } from '../../../tests/utils'; dayjs.extend(customParseFormat); jest.mock('rc-util/lib/Portal'); describe('ConfigProvider', () => { describe('components', () => { function testPair(name: string, renderComponent: (props?: any) => React.ReactElement): void { const isArray = ['Menu', 'TimePicker', 'Tooltip'].includes(name); describe(`${name}`, () => { // normal it('normal', () => { const { container } = render(renderComponent({})); expect(isArray ? container.children : container.firstChild).toMatchSnapshot(); }); // prefixCls it('prefixCls', () => { const { container } = render(renderComponent({ prefixCls: `prefix-${name}` })); expect(isArray ? container.children : container.firstChild).toMatchSnapshot(); }); // configProvider it('configProvider', () => { const { container } = render( {renderComponent({})} , ); expect(isArray ? container.children : container.firstChild).toMatchSnapshot(); }); it('configProvider componentSize large', () => { const { container } = render( {renderComponent({})} , ); expect(isArray ? container.children : container.firstChild).toMatchSnapshot(); }); it('configProvider componentSize middle', () => { const { container } = render( {renderComponent({})} , ); expect(isArray ? container.children : container.firstChild).toMatchSnapshot(); }); it('configProvider componentDisabled', () => { const { container } = render( {renderComponent({})} , ); expect(isArray ? container.children : container.firstChild).toMatchSnapshot(); }); it('configProvider virtual and dropdownMatchSelectWidth', () => { const { container } = render( {renderComponent({})} , ); expect(isArray ? container.children : container.firstChild).toMatchSnapshot(); }); }); } // Alert testPair('Alert', (props) => ( )); // Anchor testPair('Anchor', (props) => ( )); // AutoComplete testPair('AutoComplete', (props) => ); // Avatar testPair('Avatar', (props) => ); // BackTop testPair('BackTop', (props) => ); // Badge testPair('Badge', (props) => { const newProps = { ...props }; // Hook for additional `scrollNumberPrefixCls` prop if (props.prefixCls) { newProps.scrollNumberPrefixCls = 'prefix-scroll-number'; } return (
); }); // Breadcrumb testPair('Breadcrumb', (props) => ( Bamboo Light )); // Button testPair('Button', (props) => (
)); // Calendar testPair('Calendar', (props) => (
)); // Card testPair('Card', (props) => ( )); // Carousel testPair('Carousel', (props) => (

Bamboo

Light

)); // Cascader testPair('Cascader', (props) => ); // Checkbox testPair('Checkbox', (props) => ( Bamboo )); // Collapse testPair('Collapse', (props) => (

Light

)); // DatePicker describe('DatePicker', () => { testPair('DatePicker', (props) => (
)); // RangePicker testPair('RangePicker', (props) => (
)); // MonthPicker testPair('MonthPicker', (props) => (
)); // WeekPicker testPair('WeekPicker', (props) => (
)); }); // Empty testPair('Empty', (props) => ); // Divider testPair('Divider', (props) => ); // Drawer testPair('Drawer', (props) => ); // Dropdown testPair('Dropdown', (props) => Light); // Form testPair('Form', (props) => (
)); // Grid testPair('Grid', (props) => { const rowProps: { prefixCls?: string } = {}; const colProps: { prefixCls?: string } = {}; if (props.prefixCls) { rowProps.prefixCls = 'prefix-row'; colProps.prefixCls = 'prefix-col'; } return ( ); }); // Input testPair('Input', (props) => (
)); // InputNumber testPair('InputNumber', (props) => ); // Layout testPair('Layout', (props) => { const siderProps: { prefixCls?: string } = {}; const headerProps: { prefixCls?: string } = {}; const contentProps: { prefixCls?: string } = {}; const footerProps: { prefixCls?: string } = {}; if (props.prefixCls) { siderProps.prefixCls = 'prefix-sider'; headerProps.prefixCls = 'prefix-header'; contentProps.prefixCls = 'prefix-content'; footerProps.prefixCls = 'prefix-footer'; } return ( ); }); // List testPair('List', (props) => ( ( } title="Ant Design" description="Ant Design, a design language for background applications, is refined by Ant UED Team" /> )} /> )); // Menu testPair('Menu', (props) => ( Light )); // Modal testPair('Modal', (props) => (
Bamboo is Little Light
)); // Pagination testPair('Pagination', (props) => (
)); // Popconfirm testPair('Popconfirm', (props) => (
Bamboo
)); // Popover testPair('Popover', (props) => (
Light
)); // Progress testPair('Progress', (props) => ); // Radio testPair('Radio', (props) => (
Bamboo Light
)); // Rate testPair('Rate', (props) => ); // Select testPair('Select', (props) => ( )); // Skeleton testPair('Skeleton', (props) => ); // Slider testPair('Slider', (props) => { const myProps = { ...props }; const tooltip: SliderTooltipProps = { open: true, }; if (myProps.prefixCls) { tooltip.prefixCls = `${myProps.prefixCls}-tooltip`; } return ; }); // Spin testPair('Spin', (props) => ); // Statistic testPair('Statistic', (props) => ); // Steps testPair('Steps', (props) => { const myProps = { ...props }; if (props.prefixCls) { myProps.iconPrefix = 'prefixIcon'; } return ( ); }); // Switch testPair('Switch', (props) => ); // Table testPair('Table', (props) => { const columns: ColumnsType = [ { title: 'Name', dataIndex: 'name', filters: [ { text: 'Joe', value: 'Joe' }, { text: 'Submenu', value: 'Submenu', children: [{ text: 'Green', value: 'Green' }], }, ], filterDropdownOpen: true, onFilter: (value, record) => record.name.indexOf(value) === 0, sorter: (a, b) => a.name.length - b.name.length, }, ]; const myProps = { ...props }; if (props.prefixCls) { myProps.dropdownPrefixCls = 'prefix-dropdown'; } return ; }); // Tabs testPair('Tabs', (props) => ( )); // Tags testPair('Tags', (props) => (
Bamboo Light
)); // TimePicker testPair('TimePicker', (props) => ( )); // Timeline testPair('Timeline', (props) => ( Bamboo )); // Tooltip testPair('Tooltip', (props) => ( Light )); // Transfer testPair('Transfer', (props) => ); // Tree testPair('Tree', (props) => (
)); // TreeSelect testPair('TreeSelect', (props) => ( )); // Upload testPair('Upload', (props) => ( )); }); });