123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 |
- import { createTest, destroyVM, createVue } from '../util';
- import TimePicker from 'packages/time-picker';
- const DELAY = 100;
- describe('TimePicker', () => {
- let vm;
- afterEach(() => {
- destroyVM(vm);
- });
- it('create', () => {
- vm = createTest(TimePicker, {
- placeholder: 'test',
- readonly: true
- });
- expect(vm.$el.querySelector('input').getAttribute('placeholder')).to.equal('test');
- expect(vm.$el.querySelector('input').getAttribute('readonly')).to.ok;
- });
- it('format', () => {
- vm = createTest(TimePicker, {
- format: 'HH-mm-ss',
- value: new Date(2016, 9, 10, 18, 40)
- });
- expect(vm.$el.querySelector('input').value).to.equal('18-40-00');
- });
- it('default value', done => {
- vm = createTest(TimePicker, {
- value: new Date(2016, 9, 10, 18, 40)
- }, true);
- const input = vm.$el.querySelector('input');
- input.blur();
- input.focus();
- input.blur();
- setTimeout(_ => {
- const times = vm.picker.$el.querySelectorAll('.active');
- expect(times[0].textContent).to.equal('18');
- expect(times[1].textContent).to.equal('40');
- expect(times[2].textContent).to.equal('00');
- done();
- }, DELAY);
- });
- it('select time', done => {
- vm = createVue({
- template: '<el-time-picker ref="compo" v-model="value"></el-time-picker>',
- data() {
- return {
- value: ''
- };
- }
- }, true);
- const timePicker = vm.$refs.compo;
- const input = timePicker.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- const list = timePicker.picker.$el.querySelectorAll('.el-time-spinner__list');
- const hoursEl = list[0];
- const minutesEl = list[1];
- const secondsEl = list[2];
- const hourEl = hoursEl.querySelectorAll('.el-time-spinner__item')[4];
- const minuteEl = minutesEl.querySelectorAll('.el-time-spinner__item')[36];
- const secondEl = secondsEl.querySelectorAll('.el-time-spinner__item')[20];
- // click hour, minute, second one at a time.
- hourEl.click();
- vm.$nextTick(_ => {
- minuteEl.click();
- vm.$nextTick(_ => {
- secondEl.click();
- setTimeout(_ => {
- const date = timePicker.picker.date;
- expect(hourEl.classList.contains('active')).to.true;
- expect(minuteEl.classList.contains('active')).to.true;
- expect(secondEl.classList.contains('active')).to.true;
- expect(date.getHours()).to.equal(4);
- expect(date.getMinutes()).to.equal(36);
- expect(date.getSeconds()).to.equal(20);
- done();
- }, DELAY);
- });
- });
- }, DELAY);
- });
- it('click cancel button', done => {
- vm = createVue({
- template: '<el-time-picker ref="compo" v-model="value"></el-time-picker>',
- data() {
- return {
- value: ''
- };
- }
- }, true);
- const timePicker = vm.$refs.compo;
- const input = timePicker.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- timePicker.picker.$el.querySelector('.el-time-panel__btn.cancel').click();
- setTimeout(_ => {
- expect(vm.value).to.equal('');
- done();
- }, DELAY);
- }, DELAY);
- });
- it('click confirm button', done => {
- vm = createVue({
- template: '<el-time-picker ref="compo" v-model="value"></el-time-picker>',
- data() {
- return {
- value: ''
- };
- }
- }, true);
- const timePicker = vm.$refs.compo;
- const input = timePicker.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- timePicker.picker.$el.querySelector('.el-time-panel__btn.confirm').click();
- setTimeout(_ => {
- expect(vm.value.toISOString()).to.exist;
- done();
- }, DELAY);
- }, DELAY);
- });
- it('set format', done => {
- vm = createTest(TimePicker, {
- pickerOptions: {
- format: 'HH:mm'
- }
- }, true);
- const input = vm.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- expect(vm.picker.$el.querySelectorAll('.el-time-spinner__wrapper')[2].style.display).to.equal('none');
- done();
- }, 20);
- });
- it('set format to empty', done => {
- vm = createTest(TimePicker, {
- pickerOptions: {
- format: ''
- }
- }, true);
- const input = vm.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- expect(vm.picker.$el.querySelectorAll('.el-time-spinner__wrapper')[2].style.display).to.equal('none');
- done();
- }, DELAY);
- });
- it('selectableRange', done => {
- vm = createTest(TimePicker, {
- pickerOptions: {
- selectableRange: '18:30:00 - 20:30:00'
- }
- }, true);
- const input = vm.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- const list = vm.picker.$el.querySelectorAll('.el-time-spinner__list');
- const hoursEl = list[0];
- const disabledHours = [].slice
- .call(hoursEl.querySelectorAll('.disabled'))
- .map(node => Number(node.textContent));
- hoursEl.querySelectorAll('.disabled')[0].click();
- expect(disabledHours).to.not.include.members([18, 19, 20]);
- done();
- }, DELAY);
- });
- it('event focus and blur', done => {
- vm = createVue({
- template: `
- <el-date-picker
- type="date"
- placeholder="选择日期"
- ref="picker">
- </el-date-picker>
- `
- }, true);
- const spyFocus = sinon.spy();
- const spyBlur = sinon.spy();
- vm.$refs.picker.$on('focus', spyFocus);
- vm.$refs.picker.$on('blur', spyBlur);
- vm.$el.querySelector('input').focus();
- vm.$el.querySelector('input').blur();
- vm.$nextTick(_ => {
- expect(spyFocus.calledOnce).to.be.true;
- expect(spyBlur.calledOnce).to.be.true;
- done();
- });
- });
- it('focus', done => {
- vm = createVue({
- template: `
- <el-date-picker
- type="date"
- placeholder="选择日期"
- 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();
- });
- });
- });
- describe('TimePicker(range)', () => {
- let vm;
- afterEach(() => destroyVM(vm));
- it('create', done => {
- vm = createTest(TimePicker, {
- isRange: true,
- value: [new Date(2016, 9, 10, 18, 40), new Date(2016, 9, 10, 19, 40)]
- }, true);
- vm.$el.querySelector('input').click();
- setTimeout(_ => {
- expect(vm.picker.$el.querySelectorAll('.el-time-range-picker__cell')).to.length(2);
- expect(vm.picker.minDate.getTime()).to.equal(new Date(2016, 9, 10, 18, 40).getTime());
- expect(vm.picker.maxDate.getTime()).to.equal(new Date(2016, 9, 10, 19, 40).getTime());
- done();
- }, DELAY);
- });
- it('default value', done => {
- const defaultValue = [new Date(2000, 9, 1, 10, 0, 0), new Date(2000, 9, 1, 11, 0, 0)];
- vm = createVue({
- template: '<el-time-picker ref="compo" is-range v-model="value" :default-value="defaultValue"></el-time-picker>',
- data() {
- return {
- value: '',
- defaultValue
- };
- }
- }, true);
- const timePicker = vm.$refs.compo;
- timePicker.$el.querySelector('input').click();
- setTimeout(_ => {
- expect(timePicker.picker.minDate.getTime()).to.equal(defaultValue[0].getTime());
- expect(timePicker.picker.maxDate.getTime()).to.equal(defaultValue[1].getTime());
- done();
- }, DELAY);
- });
- it('cancel button', done => {
- vm = createVue({
- template: '<el-time-picker ref="compo" is-range v-model="value"></el-time-picker>',
- data() {
- return {
- value: ''
- };
- }
- }, true);
- const timePicker = vm.$refs.compo;
- timePicker.$el.querySelector('input').click();
- setTimeout(_ => {
- timePicker.picker.$el.querySelector('.cancel').click();
- setTimeout(_ => {
- expect(timePicker.picker.visible).to.false;
- expect(vm.value).to.equal('');
- done();
- }, DELAY);
- }, DELAY);
- });
- });
|