input.spec.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. import { createVue } from '../util';
  2. describe('Input', () => {
  3. it('create', () => {
  4. const vm = createVue({
  5. template: `
  6. <el-input
  7. :minlength="3"
  8. :maxlength="5"
  9. placeholder="请输入内容"
  10. @focus="handleFocus"
  11. value="input">
  12. </el-input>
  13. `,
  14. data() {
  15. return {
  16. inputFocus: false
  17. };
  18. },
  19. methods: {
  20. handleFocus() {
  21. this.inputFocus = true;
  22. }
  23. }
  24. }, true);
  25. let inputElm = vm.$el.querySelector('input');
  26. inputElm.focus();
  27. expect(vm.inputFocus).to.be.true;
  28. expect(inputElm.getAttribute('placeholder')).to.equal('请输入内容');
  29. expect(inputElm.value).to.equal('input');
  30. expect(inputElm.getAttribute('minlength')).to.equal('3');
  31. expect(inputElm.getAttribute('maxlength')).to.equal('5');
  32. });
  33. it('disabled', () => {
  34. const vm = createVue({
  35. template: `
  36. <el-input disabled>
  37. </el-input>
  38. `
  39. }, true);
  40. expect(vm.$el.querySelector('input').getAttribute('disabled')).to.ok;
  41. });
  42. it('icon', () => {
  43. const vm = createVue({
  44. template: `
  45. <el-input
  46. icon="time"
  47. @click="handleIconClick"
  48. >
  49. </el-input>
  50. `,
  51. data() {
  52. return {
  53. iconClicked: false
  54. };
  55. },
  56. methods: {
  57. handleIconClick(ev) {
  58. this.iconClicked = true;
  59. }
  60. }
  61. }, true);
  62. var icon = vm.$el.querySelector('.el-input__icon');
  63. icon.click();
  64. expect(icon.classList.contains('el-icon-time')).to.true;
  65. expect(vm.iconClicked).to.true;
  66. });
  67. it('size', () => {
  68. const vm = createVue({
  69. template: `
  70. <el-input size="large">
  71. </el-input>
  72. `
  73. }, true);
  74. expect(vm.$el.classList.contains('el-input--large')).to.true;
  75. });
  76. it('type', () => {
  77. const vm = createVue({
  78. template: `
  79. <el-input type="textarea">
  80. </el-input>
  81. `
  82. }, true);
  83. expect(vm.$el.classList.contains('el-textarea')).to.true;
  84. });
  85. it('rows', () => {
  86. const vm = createVue({
  87. template: `
  88. <el-input type="textarea" :rows="3">
  89. </el-input>
  90. `
  91. }, true);
  92. expect(vm.$el.querySelector('.el-textarea__inner').getAttribute('rows')).to.be.equal('3');
  93. });
  94. it('autosize', done => {
  95. const vm = createVue({
  96. template: `
  97. <div>
  98. <el-input
  99. ref="limitSize"
  100. type="textarea"
  101. :autosize="{minRows: 3, maxRows: 5}"
  102. v-model="textareaValue"
  103. >
  104. </el-input>
  105. <el-input
  106. ref="limitlessSize"
  107. type="textarea"
  108. autosize
  109. v-model="textareaValue"
  110. >
  111. </el-input>
  112. </div>
  113. `,
  114. data() {
  115. return {
  116. textareaValue: 'sda\ndasd\nddasdsda\ndasd\nddasdsda\ndasd\nddasdsda\ndasd\nddasd'
  117. };
  118. }
  119. }, true);
  120. var limitSizeInput = vm.$refs.limitSize;
  121. var limitlessSizeInput = vm.$refs.limitlessSize;
  122. expect(limitSizeInput.textareaStyle.height).to.be.equal('117px');
  123. expect(limitlessSizeInput.textareaStyle.height).to.be.equal('201px');
  124. vm.textareaValue = '';
  125. setTimeout(_ => {
  126. expect(limitSizeInput.textareaStyle.height).to.be.equal('75px');
  127. expect(limitlessSizeInput.textareaStyle.height).to.be.equal('33px');
  128. done();
  129. }, 200);
  130. });
  131. });