calendar.spec.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import { createVue, destroyVM, waitImmediate } from '../util';
  2. describe('Calendar', () => {
  3. let vm;
  4. afterEach(() => {
  5. destroyVM(vm);
  6. });
  7. it('create', async() => {
  8. vm = createVue({
  9. template: `
  10. <el-calendar v-model="value"></el-calendar>
  11. `,
  12. data() {
  13. return {
  14. value: new Date('2019-04-01')
  15. };
  16. }
  17. }, true);
  18. const titleEl = vm.$el.querySelector('.el-calendar__title');
  19. expect(/2019.*4/.test(titleEl.innerText)).to.be.true;
  20. expect(vm.$el.querySelectorAll('thead th').length).to.equal(7);
  21. const rows = vm.$el.querySelectorAll('.el-calendar-table__row');
  22. expect(rows.length).to.equal(6);
  23. rows[5].firstElementChild.click();
  24. await waitImmediate();
  25. expect(/2019.*5/.test(titleEl.innerText)).to.be.true;
  26. const value = vm.value;
  27. expect(value.getFullYear()).to.be.equal(2019);
  28. expect(value.getMonth()).to.be.equal(4);
  29. expect(vm.$el.querySelector('.is-selected span').innerText).to.be.equal('6');
  30. });
  31. it('range', () => {
  32. vm = createVue({
  33. template: `
  34. <el-calendar :range="['2019-03-04', '2019-03-24']"></el-calendar>
  35. `
  36. }, true);
  37. const titleEl = vm.$el.querySelector('.el-calendar__title');
  38. expect(/2019.*3/.test(titleEl.innerText)).to.be.true;
  39. const rows = vm.$el.querySelectorAll('.el-calendar-table__row');
  40. expect(rows.length).to.equal(3);
  41. expect(vm.$el.querySelector('.el-calendar__button-group')).to.be.a('null');
  42. });
  43. it('range tow monthes', async() => {
  44. vm = createVue({
  45. template: `
  46. <el-calendar :range="['2019-04-15', '2019-05-19']"></el-calendar>
  47. `
  48. }, true);
  49. const titleEl = vm.$el.querySelector('.el-calendar__title');
  50. expect(/2019.*4/.test(titleEl.innerText)).to.be.true;
  51. const dateTables = vm.$el.querySelectorAll('.el-calendar-table.is-range');
  52. expect(dateTables.length).to.be.equal(2);
  53. const rows = vm.$el.querySelectorAll('.el-calendar-table__row');
  54. expect(rows.length).to.equal(5);
  55. const cell = rows[rows.length - 1].firstElementChild;
  56. cell.click();
  57. await waitImmediate();
  58. expect(/2019.*5/.test(titleEl.innerText)).to.be.true;
  59. expect(cell.classList.contains('is-selected')).to.be.true;
  60. });
  61. it('firstDayOfWeek', async() => {
  62. vm = createVue({
  63. template: `
  64. <el-calendar v-model="value" :first-day-of-week="0"></el-calendar>
  65. `,
  66. data() {
  67. return {
  68. value: new Date('2019-04-01')
  69. };
  70. }
  71. }, true);
  72. const head = vm.$el.querySelector('.el-calendar-table thead');
  73. expect(head.firstElementChild.innerText).to.be.equal('日');
  74. expect(head.lastElementChild.innerText).to.be.equal('六');
  75. const firstRow = vm.$el.querySelector('.el-calendar-table__row');
  76. expect(firstRow.firstElementChild.innerText).to.be.equal('31');
  77. expect(firstRow.lastElementChild.innerText).to.be.equal('6');
  78. });
  79. it('firstDayOfWeek in range mode', async() => {
  80. vm = createVue({
  81. template: `
  82. <el-calendar v-model="value" :first-day-of-week="7" :range="['2019-02-03', '2019-03-23']"></el-calendar>
  83. `,
  84. data() {
  85. return {
  86. value: new Date('2019-03-04')
  87. };
  88. }
  89. }, true);
  90. const head = vm.$el.querySelector('.el-calendar-table thead');
  91. expect(head.firstElementChild.innerText).to.be.equal('日');
  92. expect(head.lastElementChild.innerText).to.be.equal('六');
  93. const firstRow = vm.$el.querySelector('.el-calendar-table__row');
  94. expect(firstRow.firstElementChild.innerText).to.be.equal('3');
  95. expect(firstRow.lastElementChild.innerText).to.be.equal('9');
  96. });
  97. });