123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- import { createTest, createVue } from '../util';
- import DatePicker from 'packages/date-picker';
- describe('DatePicker', () => {
- it('create', () => {
- const vm = createTest(DatePicker, {
- readonly: true,
- placeholder: '23333',
- format: 'HH-mm-ss'
- });
- const input = vm.$el.querySelector('input');
- expect(input.getAttribute('placeholder')).to.equal('23333');
- expect(input.getAttribute('readonly')).to.equal('readonly');
- });
- it('select date', done => {
- const 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();
- // click 5
- arrowLeftElm.click();
- arrowLeftElm.click();
- arrowLeftElm.click();
- arrowLeftElm.click();
- arrowLeftElm.click();
- // click 3
- arrowRightElm.click();
- arrowRightElm.click();
- 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();
- }, 150);
- }, 150);
- });
- it('type:month', done => {
- const vm = createTest(DatePicker, {
- type: 'month'
- }, true);
- const input = vm.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- expect(vm.picker.$el.querySelector('.el-month-table').style.display).to.be.empty;
- expect(vm.picker.$el.querySelector('.el-year-table').style.display).to.be.equal('none');
- vm.picker.$el.querySelector('.el-month-table a.cell').click();
- setTimeout(_ => {
- expect(vm.picker.$el.style.display).to.be.equal('none');
- done();
- }, 500);
- }, 150);
- });
- it('type:year', done => {
- const vm = createTest(DatePicker, {
- type: 'year'
- }, true);
- const input = vm.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- expect(vm.picker.$el.querySelector('.el-year-table').style.display).to.empty;
- expect(vm.picker.$el.querySelector('.el-month-table').style.display).to.be.equal('none');
- vm.picker.$el.querySelector('.el-icon-d-arrow-left').click();
- vm.picker.$el.querySelector('.el-icon-d-arrow-right').click();
- vm.picker.$el.querySelector('.el-year-table a.cell').click();
- setTimeout(_ => {
- expect(vm.picker.$el.style.display).to.be.equal('none');
- expect(vm.picker.date).to.exist;
- done();
- }, 500);
- }, 150);
- });
- it('type:datetime', done => {
- const vm = createTest(DatePicker, {
- type: 'datetime'
- }, true);
- const input = vm.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- expect(vm.picker.$el.querySelector('.el-time-panel')).to.ok;
- done();
- }, 150);
- });
- it('type:week', done => {
- const vm = createTest(DatePicker, {
- type: 'week'
- }, true);
- const input = vm.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- expect(vm.picker.$el.querySelector('.is-week-mode')).to.be.ok;
- done();
- }, 150);
- });
- it('type:daterange', done => {
- const vm = createTest(DatePicker, {
- type: 'daterange'
- }, true);
- const input = vm.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- const panels = vm.picker.$el.querySelectorAll('.el-date-range-picker__content');
- expect(Array.prototype.slice.call(panels)).to.length(2);
- panels[0].querySelector('td.available').click();
- setTimeout(_ => {
- panels[1].querySelector('td.available').click();
- const { minDate, maxDate } = vm.picker;
- expect(minDate).to.exist;
- expect(maxDate).to.exist;
- expect(maxDate > minDate).to.true;
- done();
- }, 150);
- }, 150);
- });
- it('type:datetimerange', done => {
- const vm = createTest(DatePicker, {
- type: 'datetimerange'
- }, true);
- const input = vm.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- expect(Array.prototype.slice.call(vm.picker.$el.querySelectorAll('.el-time-panel'))).to.length(2);
- done();
- }, 150);
- });
- it('picker-options:shortcuts', done => {
- const vm = createTest(DatePicker, {
- pickerOptions: {
- shortcuts: [
- {
- text: '今天',
- onClick(picker) {
- picker.$emit('pick', new Date());
- }
- }
- ]
- }
- }, true);
- const input = vm.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- expect(vm.picker.$el.querySelector('.el-picker-panel__shortcut').textContent).to.be.equal('今天');
- expect(vm.picker.$el.querySelector('.el-picker-panel__sidebar')).to.be.ok;
- done();
- }, 150);
- });
- it('picker-options:disabledDate', done => {
- const vm = createTest(DatePicker, {
- pickerOptions: {
- disabledDate(time) {
- return time.getTime() < Date.now() - 8.64e7;
- }
- }
- }, true);
- const input = vm.$el.querySelector('input');
- input.blur();
- input.focus();
- setTimeout(_ => {
- expect(vm.picker.$el.querySelector('.disabled')).to.be.ok;
- done();
- }, 150);
- });
- });
|