import {
createTest,
createVue,
destroyVM,
triggerEvent,
wait
} from '../util';
import DatePicker from 'packages/date-picker';
const DELAY = 50;
const LEFT = 37;
const ENTER = 13;
const TAB = 9;
const keyDown = (el, keyCode) => {
const evt = document.createEvent('Events');
evt.initEvent('keydown', true, true);
evt.keyCode = keyCode;
el.dispatchEvent(evt);
};
describe('DatePicker', () => {
let vm;
afterEach(() => { destroyVM(vm); });
it('create', () => {
vm = createTest(DatePicker, {
readonly: true,
placeholder: '23333',
format: 'HH-mm-ss'
}, true);
const input = vm.$el.querySelector('input');
expect(input.getAttribute('placeholder')).to.equal('23333');
expect(input.getAttribute('readonly')).to.equal('readonly');
});
it('select date', done => {
vm = createVue({
template: `
<el-date-picker ref="compo" v-model="value"></el-date-picker>
`,
data() {
return {
value: ''
};
}
}, true);
const input = vm.$el.querySelector('input');
const date = new Date();
input.blur();
input.focus();
setTimeout(_ => {
const $el = vm.$refs.compo.picker.$el;
const spans = $el.querySelectorAll('.el-date-picker__header-label');
const arrowLeftElm = $el.querySelector('.el-date-picker__prev-btn.el-icon-arrow-left');
const arrowRightElm = $el.querySelector('.el-date-picker__next-btn.el-icon-arrow-right');
expect(spans[0].textContent).to.include(date.getFullYear());
expect(spans[1].textContent).to.include(date.getMonth() + 1);
$el.querySelector('.el-date-picker__prev-btn.el-icon-d-arrow-left').click();
let count = 20;
while (--count) {
arrowLeftElm.click();
}
count = 20;
while (--count) {
arrowRightElm.click();
}
setTimeout(_ => {
expect(spans[0].textContent).to.include(date.getFullYear() - 1);
expect(spans[1].textContent).to.include(date.getMonth() + 1);
$el.querySelector('td.available').click();
vm.$nextTick(_ => {
expect(vm.value).to.exist;
});
done();
}, DELAY);
}, DELAY);
});
it('clear value', done => {
vm = createVue({
template: `
<el-date-picker v-model="value" ref="compo"></el-date-picker>
`,
data() {
return {
value: ''
};
}
}, true);
const input = vm.$el.querySelector('input');
input.focus();
setTimeout(_ => {
const $el = vm.$refs.compo.picker.$el;
$el.querySelector('td.available').click();
setTimeout(_ => {
vm.$refs.compo.showClose = true;
vm.$refs.compo.handleClickIcon({ stopPropagation: () => null });
setTimeout(_ => {
expect(vm.value).to.equal(null);
done();
}, DELAY);
}, DELAY);
}, DELAY);
});
it('disabled clear value', done => {
vm = createVue({
template: `
<el-date-picker v-model="value" ref="compo" :clearable="false"></el-date-picker>
`,
data() {
return {
value: ''
};
}
}, true);
const input = vm.$el.querySelector('input');
input.focus();
setTimeout(_ => {
const $el = vm.$refs.compo.picker.$el;
$el.querySelector('td.available').click();
vm.$nextTick(_ => {
vm.$el.querySelector('.el-input__icon').click();
setTimeout(_ => {
expect(vm.value).to.be.exist;
done();
}, DELAY);
});
}, DELAY);
});
it('reset', done => {
vm = createVue({
template: `
<el-date-picker ref="compo" v-model="value"></el-date-picker>
`,
data() {
return {
value: ''
};
}
}, true);
const input = vm.$el.querySelector('input');
input.blur();
input.focus();
setTimeout(_ => {
const $el = vm.$refs.compo.picker.$el;
$el.querySelector('.el-date-picker__next-btn.el-icon-arrow-right').click();
setTimeout(_ => {
$el.querySelector('td.available').click();
vm.$nextTick(_ => {
vm.value = '';
setTimeout(_ => {
expect(vm.$refs.compo.picker.date.getDate()).to.equal(new Date().getDate());
done();
}, DELAY);
});
}, DELAY);
}, DELAY);
});
it('focus', done => {
vm = createVue({
template: `
<el-date-picker ref="picker"></el-date-picker>
`
}, true);
const spy = sinon.spy();
vm.$refs.picker.$on('focus', spy);
vm.$refs.picker.focus();
vm.$nextTick(_ => {
expect(spy.calledOnce).to.be.true;
done();
});
});
it('change event', done => {
let onChangeValue;
vm = createVue({
template: `
<el-date-picker
ref="compo"
v-model="value"
@change="handleChange" />`,
methods: {
handleChange(val) {
onChangeValue = val;
}
},
data() {
return {
value: ''
};
}
}, true);
const input = vm.$el.querySelector('input');
input.blur();
input.focus();
setTimeout(_ => {
const picker = vm.$refs.compo.picker;
// programatic modification of bound value does not emit cange
vm.value = new Date(2000, 9, 2);
setTimeout(_ => {
expect(onChangeValue).to.not.exist;
// user interaction does emit change
picker.$el.querySelector('td.available').click();
setTimeout(_ => {
expect(onChangeValue.getTime()).to.equal(vm.value.getTime());
done();
}, DELAY);
}, DELAY);
}, DELAY);
});
it('change event: when clear(), without opening picker', done => {
vm = createVue({
template: `
<el-date-picker
ref="compo"
v-model="value"
/>`,
data() {
return {
value: new Date()
};
}
}, true);
const spy = sinon.spy();
vm.$refs.compo.$on('change', spy);
setTimeout(_ => {
vm.$refs.compo.showClose = true;
vm.$refs.compo.handleClickIcon({ stopPropagation: () => null });
setTimeout(_ => {
expect(spy.calledOnce).to.equal(true);
expect(spy.calledWith(null)).to.equal(true);
done();
}, DELAY);
}, DELAY);
});
it('nuke invalid input on close', done => {
vm = createVue({
template: '<el-date-picker v-model="value" value-format="yyyy-MM-dd" ref="compo" />',
data() {
return {
value: '2010-10-01'
};
}
}, true);
const compo = vm.$refs.compo;
const input = compo.$el.querySelector('input');
input.blur();
input.focus();
setTimeout(_ => {
compo.userInput = 'abc';
compo.handleChange(); // simplified test
compo.handleClose();
setTimeout(_ => {
expect(input.value).to.equal('2010-10-01');
expect(vm.value).to.equal('2010-10-01');
done();
}, DELAY);
}, DELAY);
});
it('select datetime with defaultTime', done => {
vm = createVue({
template: `
<el-date-picker ref="compo" type="datetime" v-model="value" default-time="12:00:00"></el-date-picker>
`,
data() {
return {
value: ''
};
}
}, true);
const input = vm.$el.querySelector('input');
input.blur();
input.focus();
setTimeout(_ => {
const picker = vm.$refs.compo.picker;
picker.$el.querySelector('td.available').click();
setTimeout(_ => {
const date = vm.$refs.compo.picker.date;
expect(date.getHours()).to.equal(12);
expect(date.getMinutes()).to.equal(0);
expect(date.getSeconds()).to.equal(0);
done();
}, DELAY);
}, DELAY);
});
describe('input event', () => {
// mimic standard <select>'s behavior
// emit input if and only if value changes
afterEach(() => { destroyVM(vm); });
a3737337
- 粉丝: 0
- 资源: 2869
最新资源
- LabVIEW基于Kvaser USBcan的UDS烧录Hex文件 程序包含 1. 基于ISO14229 UDS通讯,适用于各种服务,如常用的10,22,2E,27,34等服务 2. 解析Hex烧录文
- Comsol54二维旋磁光子晶体单向传输及能带分析 包含二维光子晶体单胞能带求解,超胞能带求解以及单向传输激发
- 大型三菱plcQ系列 四个QD77简易运动模块,通信总线控制 48 轴,程序八万步,写法新颖,思路清晰 读性性和可移植性强,带远程I O 以态网通信,视觉通信,伺服参数设置 程序虽然复杂,但分块编写
- 欧姆龙PLC项目程序NJ系列模切机程序 1、12轴EtherCAT总线伺服运动控制,包含回零、点动、定位、速度控制 2、张力控制PID算法,收放卷径计算, 3、隔膜自动纠偏控制,模拟量数据平均
- k-medoids 聚类方法的MATLAB源代码,导入数据部分和画图部分已经用中文给出了注释 这儿选取一个对象叫做mediod来代替上面的中心 的作用,这样的一个medoid就标识了这个类
- 工业运动控制器,自动追剪,飞剪,旋切 流水线追随工作方式,电子凸轮插补跟踪控制系统,移栽装配机械手,视觉定位功能
- modbus主站源码STM32F103正常使用,读取多个从机功能码通信,写从机寄存器,移植简单,模块化编程,已经过整理,程序流程清晰
- FPGA 以太网 UPD IP 协议实现 fpga 千兆以FPGA 以太网 UPD IP 协议实现 fpga 千兆以FPGA 以太网 UPD IP 协议实现, fpga 千兆以太网接口控制器,FP
- 含分布式电源的三相潮流计算,程序采用前推回代法开展潮流计算,考虑了三相不平衡的情况,通过求解,得到了三相的电压分布和相角分布,同时,还与单相的结果开展对比
- 基于多目标粒子群算法的微电网优化 首先构建了含风光柴储的微电网模型,之后以风光柴储运行成本最低和风光消纳最大为目标,建立了多目标优化模型,模型考虑功率平衡储能SOC等约束通过模型求解得到帕累托前沿 再
- wincc嵌入式excel报表 一、功能介绍 该报表系统能够读取WINCC中历史归档数据,产生出EXCEL报表文件,同时在画面中EXCEL控件实时显示 该报表系统有如下优点: 1、 该报表系统具备日
- 博图WINCC历史数据记录到SQL数据库 将博图WinCC中的变量作为历史数据记录到SQL Server数据库中,并将历史数据记录作为曲线图的方式展示出来,软件采用博图V15.1 Adanced编写
- matlab程序,电力市场,天然气市场出清,主要研究了多方博弈行为及其对市场出清和能源价格的影响 电力市场出清
- 西门子官方飞据例子,定长切断等,1500+v90伺服做的,非常值得学习的资料文件是博图v16.
- 三菱PLC pid程序 三菱触摸屏程序和三菱PLC程序,程序都有注释,用的三菱FX3U系列plc,程序简单仅供入门学习,是入门级三菱PLC电气爱好从业人员学习模板
- Qt数据导入导出(pdf xls)及打印源码 1. 组件同时集成了导出数据到csv、xls、pdf和打印数据 2. 所有操作全部提供静态方法无需new,数据和属性等各种参数设置采用结构体数据,极为方
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈