import { mount } from '@vue/test-utils';
import MockDate from 'mockdate';
import Descriptions from '..';
import { resetWarned } from '../../_util/warning';
import { asyncExpect } from '@/tests/utils';
jest.mock('enquire.js', () => {
let that;
let unmatchFun;
return {
unregister: jest.fn(),
register: (media, options) => {
if (media === '(max-width: 575px)') {
that = this;
options.match.call(that);
unmatchFun = options.unmatch;
}
},
callunmatch() {
unmatchFun.call(that);
},
};
});
describe('Descriptions', () => {
const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
afterEach(() => {
MockDate.reset();
errorSpy.mockReset();
});
afterAll(() => {
errorSpy.mockRestore();
});
it('when typeof column is object', async () => {
const wrapper = mount(
{
render() {
return (
Cloud Database
Prepaid
18:00:00
$80.00
);
},
},
{ sync: false, attachTo: 'body' },
);
await asyncExpect(() => {
expect(wrapper.vm.$refs.descriptions.getColumn()).toBe(8);
}, 100);
wrapper.unmount();
});
it('column is number', () => {
// eslint-disable-next-line global-require
const wrapper = mount({
render() {
return (
Cloud Database
Prepaid
18:00:00
$80.00
);
},
});
expect(wrapper.html()).toMatchSnapshot();
wrapper.unmount();
});
it('warning if ecceed the row span', () => {
resetWarned();
mount({
render() {
return (
Cloud Database
Prepaid
);
},
});
expect(errorSpy).toHaveBeenCalledWith(
'Warning: [antdv: Descriptions] Sum of column `span` in a line exceeds `column` of Descriptions.',
);
});
it('when item is rendered conditionally', () => {
const hasDiscount = false;
const wrapper = mount({
render() {
return (
Cloud Database
Prepaid
18:00:00
$80.00
{hasDiscount && $20.00}
);
},
});
expect(wrapper.html()).toMatchSnapshot();
wrapper.unmount();
});
it('vertical layout', () => {
// eslint-disable-next-line global-require
const wrapper = mount({
render() {
return (
Cloud Database
Prepaid
18:00:00
$80.00
);
},
});
expect(wrapper.html()).toMatchSnapshot();
wrapper.unmount();
});
it('Descriptions.Item support className', () => {
const wrapper = mount({
render() {
return (
Cloud Database
);
},
});
expect(wrapper.html()).toMatchSnapshot();
});
it('Descriptions support colon', () => {
const wrapper = mount({
render() {
return (
Cloud Database
);
},
});
expect(wrapper.html()).toMatchSnapshot();
});
it('Descriptions support style', () => {
const wrapper = mount({
render() {
return (
Cloud Database
);
},
});
expect(wrapper.html()).toMatchSnapshot();
});
it('when max-width: 575px,column=1', async () => {
// eslint-disable-next-line global-require
const enquire = require('enquire.js');
const wrapper = mount(
{
render() {
return (
Cloud Database
Prepaid
18:00:00
$80.00
No-Label
);
},
},
{ sync: false, attachTo: 'body' },
);
await asyncExpect(() => {
expect(wrapper.findAll('tr')).toHaveLength(5);
expect(wrapper.findAll('.ant-descriptions-item-no-label')).toHaveLength(1);
});
enquire.callunmatch();
wrapper.unmount();
});
it('when max-width: 575px,column=2', async () => {
// eslint-disable-next-line global-require
const enquire = require('enquire.js');
const wrapper = mount(
{
render() {
return (
Cloud Database
Prepaid
18:00:00
$80.00
);
},
},
{ sync: false, attachTo: 'body' },
);
await asyncExpect(() => {});
expect(wrapper.findAll('tr')).toHaveLength(2);
enquire.callunmatch();
wrapper.unmount();
await asyncExpect(() => {});
await asyncExpect(() => {});
await asyncExpect(() => {});
await asyncExpect(() => {});
});
});