import React from 'react';
import MockDate from 'mockdate';
import { mount } from 'enzyme';
import Descriptions from '..';
import mountTest from '../../../tests/shared/mountTest';
import { resetWarned } from '../../_util/warning';
describe('Descriptions', () => {
mountTest(Descriptions);
const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
jest.spyOn(window, 'matchMedia').mockImplementationOnce(query => ({
addListener: (listener) => {
if (query === '(max-width: 575px)') {
listener({ matches: true });
}
},
removeListener: jest.fn(),
}));
afterEach(() => {
MockDate.reset();
errorSpy.mockReset();
});
afterAll(() => {
errorSpy.mockRestore();
});
it('when max-width: 575px,column=1', () => {
const wrapper = mount(
Cloud Database
Prepaid
18:00:00
$80.00
No-Label
,
);
expect(wrapper.find('tr')).toHaveLength(5);
expect(wrapper.find('.ant-descriptions-item-no-label')).toHaveLength(1);
wrapper.unmount();
});
it('when max-width: 575px,column=2', () => {
// eslint-disable-next-line global-require
const wrapper = mount(
Cloud Database
Prepaid
18:00:00
$80.00
,
);
expect(wrapper.find('tr')).toHaveLength(2);
wrapper.unmount();
});
it('column is number', () => {
// eslint-disable-next-line global-require
const wrapper = mount(
Cloud Database
Prepaid
18:00:00
$80.00
,
);
expect(wrapper).toMatchSnapshot();
wrapper.unmount();
});
it('when typeof column is object', () => {
const wrapper = mount(
Cloud Database
Prepaid
18:00:00
$80.00
,
);
expect(wrapper.instance().getColumn()).toBe(8);
wrapper.unmount();
});
it('warning if ecceed the row span', () => {
resetWarned();
mount(
Cloud Database
Prepaid
,
);
expect(errorSpy).toHaveBeenCalledWith(
'Warning: [antd: Descriptions] Sum of column `span` in a line exceeds `column` of Descriptions.',
);
});
it('when item is rendered conditionally', () => {
const hasDiscount = false;
const wrapper = mount(
Cloud Database
Prepaid
18:00:00
$80.00
{hasDiscount && $20.00}
,
);
expect(wrapper).toMatchSnapshot();
wrapper.unmount();
});
it('vertical layout', () => {
// eslint-disable-next-line global-require
const wrapper = mount(
Cloud Database
Prepaid
18:00:00
$80.00
,
);
expect(wrapper).toMatchSnapshot();
wrapper.unmount();
});
it('Descriptions.Item support className', () => {
const wrapper = mount(
Cloud Database
,
);
expect(wrapper).toMatchSnapshot();
});
it('Descriptions support colon', () => {
const wrapper = mount(
Cloud Database
,
);
expect(wrapper).toMatchSnapshot();
});
it('Descriptions support style', () => {
const wrapper = mount(
Cloud Database
,
);
expect(wrapper).toMatchSnapshot();
});
it('keep key', () => {
const wrapper = mount(
,
);
expect(wrapper.find('Col').key()).toBe('label-bamboo');
});
// https://github.com/ant-design/ant-design/issues/19887
it('should work with React Fragment', () => {
if (!React.Fragment) {
return;
}
const wrapper = mount(
bamboo
<>
bamboo
bamboo
>
,
);
expect(wrapper.render()).toMatchSnapshot();
});
});