mirror of
https://github.com/ant-design/ant-design.git
synced 2025-06-11 03:22:59 +08:00
test: migrate part of locale-provider tests (#37198)
* test: migrate part of locale-provider tests * test: migrate part of locale-provider tests * test: migrate part of locale-provider tests * test: migrate part of locale-provider tests
This commit is contained in:
parent
5c61ea7f57
commit
908b9de345
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,9 @@
|
|||||||
import { mount } from 'enzyme';
|
|
||||||
import React, { memo, useContext, useRef, useState } from 'react';
|
import React, { memo, useContext, useRef, useState } from 'react';
|
||||||
|
import { render, fireEvent } from '../../../tests/utils';
|
||||||
import LocaleProvider, { ANT_MARK } from '..';
|
import LocaleProvider, { ANT_MARK } from '..';
|
||||||
import LocaleContext from '../context';
|
import LocaleContext from '../context';
|
||||||
|
|
||||||
const defaultLocale = {
|
const defaultLocale = { locale: 'locale' };
|
||||||
locale: 'locale',
|
|
||||||
};
|
|
||||||
// we use'memo' here in order to only render inner component while context changed.
|
// we use'memo' here in order to only render inner component while context changed.
|
||||||
const CacheInner = memo(() => {
|
const CacheInner = memo(() => {
|
||||||
const countRef = useRef(0);
|
const countRef = useRef(0);
|
||||||
@ -19,7 +17,7 @@ const CacheInner = memo(() => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
const CacheOuter = () => {
|
const CacheOuter: React.FC = () => {
|
||||||
// We use 'useState' here in order to trigger parent component rendering.
|
// We use 'useState' here in order to trigger parent component rendering.
|
||||||
const [count, setCount] = useState(1);
|
const [count, setCount] = useState(1);
|
||||||
const handleClick = () => {
|
const handleClick = () => {
|
||||||
@ -41,13 +39,13 @@ const CacheOuter = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
it("Rendering on LocaleProvider won't trigger rendering on child component.", () => {
|
it("Rendering on LocaleProvider won't trigger rendering on child component.", () => {
|
||||||
const wrapper = mount(<CacheOuter />);
|
const { container } = render(<CacheOuter />);
|
||||||
wrapper.find('#parent_btn').at(0).simulate('click');
|
fireEvent.click(container.querySelector('#parent_btn')!);
|
||||||
expect(wrapper.find('#parent_count').text()).toBe('2');
|
expect(container.querySelector('#parent_count')?.innerHTML).toBe('2');
|
||||||
// child component won't rerender
|
// child component won't rerender
|
||||||
expect(wrapper.find('#child_count').text()).toBe('1');
|
expect(container.querySelector('#child_count')?.innerHTML).toBe('1');
|
||||||
wrapper.find('#parent_btn').at(0).simulate('click');
|
fireEvent.click(container.querySelector('#parent_btn')!);
|
||||||
expect(wrapper.find('#parent_count').text()).toBe('3');
|
expect(container.querySelector('#parent_count')?.innerHTML).toBe('3');
|
||||||
// child component won't rerender
|
// child component won't rerender
|
||||||
expect(wrapper.find('#child_count').text()).toBe('1');
|
expect(container.querySelector('#child_count')?.innerHTML).toBe('1');
|
||||||
});
|
});
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
import { mount } from 'enzyme';
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { act } from 'react-dom/test-utils';
|
import { act } from 'react-dom/test-utils';
|
||||||
import { Modal } from '../..';
|
import { Modal } from '../..';
|
||||||
import { sleep } from '../../../tests/utils';
|
import { sleep, render, fireEvent } from '../../../tests/utils';
|
||||||
import ConfigProvider from '../../config-provider';
|
import ConfigProvider from '../../config-provider';
|
||||||
import zhCN from '../zh_CN';
|
import zhCN from '../zh_CN';
|
||||||
|
|
||||||
class Demo extends React.Component {
|
class Demo extends React.Component<{ type: string }> {
|
||||||
static defaultProps = {};
|
static defaultProps = {};
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
@ -24,8 +23,8 @@ describe('Locale Provider demo', () => {
|
|||||||
it('change type', async () => {
|
it('change type', async () => {
|
||||||
jest.useFakeTimers();
|
jest.useFakeTimers();
|
||||||
|
|
||||||
const BasicExample = () => {
|
const BasicExample: React.FC = () => {
|
||||||
const [type, setType] = React.useState('');
|
const [type, setType] = React.useState<string>('');
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<a className="about" onClick={() => setType('about')}>
|
<a className="about" onClick={() => setType('about')}>
|
||||||
@ -49,21 +48,21 @@ describe('Locale Provider demo', () => {
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
const wrapper = mount(<BasicExample />);
|
const { container } = render(<BasicExample />);
|
||||||
|
|
||||||
wrapper.find('.about').at(0).simulate('click');
|
fireEvent.click(container.querySelector('.about')!);
|
||||||
await act(async () => {
|
await act(async () => {
|
||||||
jest.runAllTimers();
|
jest.runAllTimers();
|
||||||
await sleep();
|
await sleep();
|
||||||
});
|
});
|
||||||
|
|
||||||
wrapper.find('.dashboard').at(0).simulate('click');
|
fireEvent.click(container.querySelector('.dashboard')!);
|
||||||
await act(async () => {
|
await act(async () => {
|
||||||
jest.runAllTimers();
|
jest.runAllTimers();
|
||||||
await sleep();
|
await sleep();
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(document.body.querySelectorAll('.ant-btn-primary span')[0].textContent).toBe('确 定');
|
expect(document.body.querySelectorAll('.ant-btn-primary span')[0]?.textContent).toBe('确 定');
|
||||||
Modal.destroyAll();
|
Modal.destroyAll();
|
||||||
jest.useRealTimers();
|
jest.useRealTimers();
|
||||||
});
|
});
|
@ -1,8 +1,8 @@
|
|||||||
/* eslint-disable react/no-multi-comp */
|
/* eslint-disable react/no-multi-comp */
|
||||||
import { mount } from 'enzyme';
|
|
||||||
import MockDate from 'mockdate';
|
import MockDate from 'mockdate';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import { render } from '../../../tests/utils';
|
||||||
import LocaleProvider from '..';
|
import LocaleProvider from '..';
|
||||||
import {
|
import {
|
||||||
Calendar,
|
Calendar,
|
||||||
@ -16,7 +16,6 @@ import {
|
|||||||
Transfer,
|
Transfer,
|
||||||
} from '../..';
|
} from '../..';
|
||||||
import mountTest from '../../../tests/shared/mountTest';
|
import mountTest from '../../../tests/shared/mountTest';
|
||||||
import { act } from '../../../tests/utils';
|
|
||||||
import arEG from '../ar_EG';
|
import arEG from '../ar_EG';
|
||||||
import azAZ from '../az_AZ';
|
import azAZ from '../az_AZ';
|
||||||
import bgBG from '../bg_BG';
|
import bgBG from '../bg_BG';
|
||||||
@ -162,17 +161,9 @@ const columns = [
|
|||||||
{
|
{
|
||||||
title: 'Name',
|
title: 'Name',
|
||||||
dataIndex: 'name',
|
dataIndex: 'name',
|
||||||
filters: [
|
filters: [{ text: 'filter1', value: 'filter1' }],
|
||||||
{
|
|
||||||
text: 'filter1',
|
|
||||||
value: 'filter1',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Age',
|
|
||||||
dataIndex: 'age',
|
|
||||||
},
|
},
|
||||||
|
{ title: 'Age', dataIndex: 'age' },
|
||||||
];
|
];
|
||||||
|
|
||||||
const App = () => (
|
const App = () => (
|
||||||
@ -214,52 +205,36 @@ describe('Locale Provider', () => {
|
|||||||
|
|
||||||
locales.forEach(locale => {
|
locales.forEach(locale => {
|
||||||
it(`should display the text as ${locale.locale}`, () => {
|
it(`should display the text as ${locale.locale}`, () => {
|
||||||
const wrapper = mount(
|
const { container } = render(
|
||||||
<LocaleProvider locale={locale}>
|
<LocaleProvider locale={locale}>
|
||||||
<App />
|
<App />
|
||||||
</LocaleProvider>,
|
</LocaleProvider>,
|
||||||
);
|
);
|
||||||
expect(wrapper.render()).toMatchSnapshot();
|
expect(container.firstChild).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should change locale of Modal.xxx', () => {
|
it('should change locale of Modal.xxx', () => {
|
||||||
class ModalDemo extends React.Component {
|
|
||||||
componentDidMount() {
|
|
||||||
jest.useFakeTimers();
|
|
||||||
Modal.confirm({
|
|
||||||
title: 'Hello World!',
|
|
||||||
});
|
|
||||||
act(() => {
|
|
||||||
jest.runAllTimers();
|
|
||||||
});
|
|
||||||
jest.useRealTimers();
|
|
||||||
}
|
|
||||||
|
|
||||||
render() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
locales.forEach(locale => {
|
locales.forEach(locale => {
|
||||||
mount(
|
const { container } = render(
|
||||||
<LocaleProvider locale={locale}>
|
<LocaleProvider locale={locale}>
|
||||||
<ModalDemo />
|
<Modal title="Locale Modal" visible getContainer={false}>
|
||||||
|
Modal
|
||||||
|
</Modal>
|
||||||
</LocaleProvider>,
|
</LocaleProvider>,
|
||||||
);
|
);
|
||||||
const currentConfirmNode =
|
let cancelButtonText = container.firstChild.querySelector(
|
||||||
document.querySelectorAll('.ant-modal-confirm')[
|
'button.ant-btn-default span',
|
||||||
document.querySelectorAll('.ant-modal-confirm').length - 1
|
)?.innerHTML;
|
||||||
];
|
let okButtonText = container.firstChild.querySelector(
|
||||||
let cancelButtonText = currentConfirmNode.querySelectorAll(
|
'button.ant-btn-primary span',
|
||||||
'.ant-btn:not(.ant-btn-primary) span',
|
)?.innerHTML;
|
||||||
)[0].innerHTML;
|
if (locale.locale.includes('zh-')) {
|
||||||
let okButtonText = currentConfirmNode.querySelectorAll('.ant-btn-primary span')[0].innerHTML;
|
|
||||||
if (locale.locale.indexOf('zh-') === 0) {
|
|
||||||
cancelButtonText = cancelButtonText.replace(' ', '');
|
cancelButtonText = cancelButtonText.replace(' ', '');
|
||||||
okButtonText = okButtonText.replace(' ', '');
|
okButtonText = okButtonText.replace(' ', '');
|
||||||
}
|
}
|
||||||
expect(cancelButtonText).toBe(locale.Modal.cancelText);
|
expect(cancelButtonText).toBe(locale.Modal?.cancelText);
|
||||||
expect(okButtonText).toBe(locale.Modal.okText);
|
expect(okButtonText).toBe(locale.Modal?.okText);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -272,11 +247,13 @@ describe('Locale Provider', () => {
|
|||||||
</LocaleProvider>
|
</LocaleProvider>
|
||||||
);
|
);
|
||||||
|
|
||||||
const wrapper = mount(<Test locale={zhCN} />);
|
const { container, rerender } = render(<Test locale={zhCN} />);
|
||||||
expect(wrapper.render()).toMatchSnapshot();
|
expect(container.firstChild).toMatchSnapshot();
|
||||||
wrapper.setProps({ locale: frFR });
|
|
||||||
expect(wrapper.render()).toMatchSnapshot();
|
rerender(<Test locale={frFR} />);
|
||||||
wrapper.setProps({ locale: null });
|
expect(container.firstChild).toMatchSnapshot();
|
||||||
expect(wrapper.render()).toMatchSnapshot();
|
|
||||||
|
rerender(<Test />);
|
||||||
|
expect(container.firstChild).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user