123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- import { createTest, createVue, destroyVM } from '../util';
- import TimeSelect from 'packages/time-select';
- import Vue from 'vue';
- describe('TimeSelect', () => {
- let vm;
- afterEach(() => {
- destroyVM(vm);
- });
- it('should render correct contents', done => {
- vm = createTest(TimeSelect, {
- pickerOptions: {
- start: '08:30',
- step: '00:15',
- end: '18:30'
- },
- placeholder: 'test'
- }, true);
- const input = vm.$el.querySelector('input');
- input.focus();
- input.blur();
- Vue.nextTick(_ => {
- expect(vm.picker.start).to.equal('08:30');
- expect(vm.picker.end).to.equal('18:30');
- expect(vm.picker.step).to.equal('00:15');
- expect(vm.$el.querySelector('input').getAttribute('placeholder')).to.equal('test');
- done();
- });
- });
- it('select time', done => {
- vm = createVue({
- template: `
- <div>
- <el-time-select ref="compo" v-model="value">
- </el-time-select>
- </div>
- `,
- data() {
- return {
- value: ''
- };
- }
- }, true);
- const input = vm.$el.querySelector('input');
- input.focus();
- input.blur();
- Vue.nextTick(_ => {
- const items = vm.$refs.compo.picker.$el.querySelectorAll('.time-select-item');
- const target = items[4];
- const time = target.textContent;
- target.click();
- Vue.nextTick(_ => {
- expect(vm.value).to.equal(time);
- done();
- });
- });
- });
- it('set default value', done => {
- vm = createTest(TimeSelect, {
- value: '14:30'
- }, true);
- const input = vm.$el.querySelector('input');
- input.focus();
- input.blur();
- setTimeout(_ => {
- expect(input.value).to.equal('14:30');
- expect(vm.picker.$el.querySelector('.selected')).to.be.ok;
- expect(vm.picker.$el.querySelector('.selected').textContent).to.equal('14:30');
- done();
- }, 50);
- });
- it('set minTime', done => {
- vm = createVue(`
- <el-time-select
- ref="picker"
- :picker-options="{
- minTime: '14:30'
- }">
- </el-time-select>
- `, true);
- const input = vm.$el.querySelector('input');
- const picker = vm.$refs.picker;
- input.focus();
- input.blur();
- setTimeout(_ => {
- const elms = picker.picker.$el.querySelectorAll('.disabled');
- const elm = elms[elms.length - 1];
- expect(elm.textContent).to.equal('14:30');
- done();
- }, 50);
- });
- it('minTime < value', done => {
- vm = createVue({
- template: `
- <el-time-select
- ref="picker"
- v-model="value"
- :picker-options="{
- minTime: '14:30'
- }">
- </el-time-select>
- `,
- data() {
- return { value: '09:30' };
- }
- }, true);
- const input = vm.$el.querySelector('input');
- const picker = vm.$refs.picker;
- input.focus();
- input.blur();
- setTimeout(_ => {
- vm.value = '10:30';
- setTimeout(_ => {
- expect(picker.picker.value).to.equal('10:30');
- done();
- }, 50);
- }, 50);
- });
- it('set maxTime', done => {
- vm = createVue(`
- <el-time-select
- ref="picker"
- :picker-options="{
- maxTime: '14:30',
- step: '00:30'
- }">
- </el-time-select>
- `, true);
- const input = vm.$el.querySelector('input');
- const picker = vm.$refs.picker;
- input.focus();
- input.blur();
- setTimeout(_ => {
- const elm = picker.picker.$el.querySelector('.disabled');
- expect(elm.textContent).to.equal('14:30');
- done();
- }, 50);
- });
- it('maxTime > value', done => {
- vm = createVue({
- template: `
- <el-time-select
- ref="picker"
- v-model="value"
- :picker-options="{
- maxTime: '14:30'
- }">
- </el-time-select>
- `,
- data() {
- return { value: '09:30' };
- }
- }, true);
- const input = vm.$el.querySelector('input');
- const picker = vm.$refs.picker;
- input.focus();
- input.blur();
- setTimeout(_ => {
- vm.value = '10:30';
- setTimeout(_ => {
- expect(picker.picker.value).to.equal('10:30');
- done();
- }, 50);
- }, 50);
- });
- it('event focus and blur', done => {
- vm = createVue({
- template: `
- <el-time-select
- ref="picker"
- :picker-options="{
- start: '08:30',
- step: '00:15',
- end: '18:30'
- }"
- placeholder="选择时间">
- </el-time-select>
- `
- }, 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-time-select ref="picker"></el-time-select>
- `
- }, true);
- const spy = sinon.spy();
- vm.$refs.picker.$on('focus', spy);
- vm.$refs.picker.focus();
- vm.$nextTick(_ => {
- expect(spy.calledOnce).to.be.true;
- done();
- });
- });
- });
|