146 lines
4.8 KiB
JavaScript
146 lines
4.8 KiB
JavaScript
/*
|
|
* Copyright (c) 2020 Huawei Technologies Co.,Ltd.
|
|
*
|
|
* openGauss is licensed under Mulan PSL v2.
|
|
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
* You may obtain a copy of Mulan PSL v2 at:
|
|
*
|
|
* http://license.coscl.org.cn/MulanPSL2
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
* See the Mulan PSL v2 for more details.
|
|
*/
|
|
|
|
import * as Horizon from '@cloudsop/horizon/index.ts';
|
|
|
|
describe('Dom Textarea', () => {
|
|
it('设置value', () => {
|
|
let realNode = Horizon.render(<textarea value='text' />, container);
|
|
expect(realNode.getAttribute('value')).toBe(null);
|
|
expect(realNode.value).toBe('text');
|
|
realNode = Horizon.render(<textarea value={0} />, container);
|
|
expect(realNode.getAttribute('value')).toBe(null);
|
|
expect(realNode.value).toBe('0');
|
|
realNode = Horizon.render(<textarea value={true} />, container);
|
|
expect(realNode.getAttribute('value')).toBe(null);
|
|
expect(realNode.value).toBe('true');
|
|
realNode = Horizon.render(<textarea value={false} />, container);
|
|
expect(realNode.getAttribute('value')).toBe(null);
|
|
expect(realNode.value).toBe('false');
|
|
});
|
|
|
|
it('设置value为对象', () => {
|
|
let textareaValue = {
|
|
toString: () => {
|
|
return 'Vue';
|
|
}
|
|
};
|
|
const textareaNode = (
|
|
<textarea value={textareaValue} />
|
|
);
|
|
const realNode = Horizon.render(textareaNode, container);
|
|
expect(realNode.value).toBe('Vue');
|
|
textareaValue = {
|
|
toString: () => {
|
|
return 'React';
|
|
}
|
|
};
|
|
const newTextareaNode = <textarea value={textareaValue} />;
|
|
// 改变value会影响select的状态
|
|
Horizon.render(newTextareaNode, container);
|
|
expect(realNode.value).toBe('React');
|
|
});
|
|
|
|
it('设置defaultValue', () => {
|
|
let defaultVal = 'Vue';
|
|
const textareaNode = <textarea defaultValue={defaultVal} />;
|
|
let realNode = Horizon.render(textareaNode, container);
|
|
expect(realNode.value).toBe('Vue');
|
|
|
|
defaultVal = 'React';
|
|
// 改变defaultValue没有影响
|
|
realNode = Horizon.render(textareaNode, container);
|
|
expect(realNode.value).toBe('Vue');
|
|
|
|
Horizon.unmountComponentAtNode(container);
|
|
defaultVal = 0;
|
|
realNode = Horizon.render(<textarea defaultValue={defaultVal} />, container);
|
|
expect(realNode.value).toBe('0');
|
|
|
|
Horizon.unmountComponentAtNode(container);
|
|
defaultVal = true;
|
|
realNode = Horizon.render(<textarea defaultValue={defaultVal} />, container);
|
|
expect(realNode.value).toBe('true');
|
|
|
|
Horizon.unmountComponentAtNode(container);
|
|
defaultVal = false;
|
|
realNode = Horizon.render(<textarea defaultValue={defaultVal} />, container);
|
|
expect(realNode.value).toBe('false');
|
|
|
|
Horizon.render(<textarea>123</textarea>, container);
|
|
expect(realNode.value).toBe('false');
|
|
});
|
|
|
|
it('设置defaultValue为对象', () => {
|
|
let textareaValue = {
|
|
toString: () => {
|
|
return 'Vue';
|
|
}
|
|
};
|
|
const textareaNode = (
|
|
<textarea defaultValue={textareaValue} />
|
|
);
|
|
const realNode = Horizon.render(textareaNode, container);
|
|
expect(realNode.value).toBe('Vue');
|
|
|
|
});
|
|
|
|
it('设置defaultValue后,select不受控', () => {
|
|
const textareaNode = <textarea defaultValue={'text'} />;
|
|
let realNode = Horizon.render(textareaNode, container);
|
|
expect(realNode.value).toBe('text');
|
|
|
|
// 先修改
|
|
Object.getOwnPropertyDescriptor(
|
|
HTMLTextAreaElement.prototype,
|
|
'value',
|
|
).set.call(realNode, 'ABC');
|
|
// 再触发事件
|
|
container.querySelector('textarea').dispatchEvent(
|
|
new Event('change', {
|
|
bubbles: true,
|
|
cancelable: true,
|
|
}),
|
|
);
|
|
// 鼠标改变textarea生效
|
|
Horizon.render(textareaNode, container);
|
|
expect(realNode.value).toBe('ABC');
|
|
});
|
|
|
|
it('受控与非受控切换', () => {
|
|
// 非受控切换为受控
|
|
let realNode = Horizon.render(<textarea defaultValue='text' />, container);
|
|
expect(realNode.value).toBe('text');
|
|
Horizon.render(<textarea value='newtext' onChange={() => { }} />, container);
|
|
expect(realNode.value).toBe('newtext');
|
|
|
|
Horizon.unmountComponentAtNode(container);
|
|
// 受控切换为非受控
|
|
realNode = Horizon.render(<textarea value='text' onChange={() => { }} />, container);
|
|
expect(realNode.value).toBe('text');
|
|
Horizon.render(<textarea defaultValue='newtext' onChange={() => { }} />, container);
|
|
expect(realNode.value).toBe('text');
|
|
});
|
|
|
|
it('textarea的孩子', () => {
|
|
let realNode = Horizon.render(<textarea>{1234}</textarea>, container);
|
|
expect(realNode.value).toBe('1234');
|
|
realNode = Horizon.render(<textarea>{5678}</textarea>, container);
|
|
// realNode.value依旧为1234
|
|
expect(realNode.value).toBe('1234');
|
|
});
|
|
|
|
});
|