fineui是帆软报表和BI产品线所使用的前端框架。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

71 lines
1.4 KiB

const onetimeAfterEach = []
afterEach(() => {
while(onetimeAfterEach.length > 0) {
onetimeAfterEach.shift()()
}
});
function registeCloser(...f) {
onetimeAfterEach.unshift(...f)
};
function sleep(t) {
return new Promise(resolve => setTimeout(() => {
resolve()
}, t))
};
function createWidget(widgetJson) {
var widget = BI.createWidget(BI.extend(widgetJson, {
root: true
}));
widget.element.appendTo("body");
registeCloser(() => {
widget.destroy()
});
return widget;
};
/**
* 模拟一次输入框的keydown事件
*/
function triggerKeyDown (element, value, keyCode, callback) {
// keydown
var e = BI.$.Event("keydown");
e.keyCode = keyCode;
element.trigger(e);
// input
BI.isNotNull(value) && element.val(value);
var e1 = BI.$.Event("input");
e1.originalEvent = {};
e1.keyCode = keyCode;
element.trigger(e1);
// keyup 至少等300ms后触发
var e2 = BI.$.Event("keyup");
e2.keyCode = keyCode;
element.trigger(e2);
BI.delay(function () {
callback();
}, 300);
};
/**
* 模拟一次鼠标hover
*/
function triggerMouseover(element, callback) {
// keydown
var e = BI.$.Event("mouseover");
element.trigger(e);
callback && callback();
};
BI.Test = {};
BI.extend(BI.Test, {
registeCloser,
sleep,
createWidget,
triggerKeyDown,
triggerMouseover
})