input-number.spec.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. import { createVue, triggerEvent, destroyVM } from '../util';
  2. describe('InputNumber', () => {
  3. let vm;
  4. afterEach(() => {
  5. destroyVM(vm);
  6. });
  7. it('create', () => {
  8. vm = createVue({
  9. template: `
  10. <el-input-number v-model="value">
  11. </el-input-number>
  12. `,
  13. data() {
  14. return {
  15. value: 1
  16. };
  17. }
  18. }, true);
  19. let input = vm.$el.querySelector('input');
  20. expect(vm.value).to.be.equal(1);
  21. expect(input.value).to.be.equal('1');
  22. });
  23. it('decrease', done => {
  24. vm = createVue({
  25. template: `
  26. <el-input-number v-model="value" ref="input">
  27. </el-input-number>
  28. `,
  29. data() {
  30. return {
  31. value: 5
  32. };
  33. }
  34. }, true);
  35. let input = vm.$el.querySelector('input');
  36. let btnDecrease = vm.$el.querySelector('.el-input-number__decrease');
  37. triggerEvent(btnDecrease, 'mousedown');
  38. triggerEvent(document, 'mouseup');
  39. vm.$nextTick(_ => {
  40. expect(vm.value).to.be.equal(4);
  41. expect(input.value).to.be.equal('4');
  42. done();
  43. });
  44. });
  45. it('increase', done => {
  46. vm = createVue({
  47. template: `
  48. <el-input-number v-model="value">
  49. </el-input-number>
  50. `,
  51. data() {
  52. return {
  53. value: 1.5
  54. };
  55. }
  56. }, true);
  57. let input = vm.$el.querySelector('input');
  58. let btnIncrease = vm.$el.querySelector('.el-input-number__increase');
  59. triggerEvent(btnIncrease, 'mousedown');
  60. triggerEvent(document, 'mouseup');
  61. vm.$nextTick(_ => {
  62. expect(vm.value).to.be.equal(2.5);
  63. expect(input.value).to.be.equal('2.5');
  64. done();
  65. });
  66. });
  67. it('disabled', done => {
  68. vm = createVue({
  69. template: `
  70. <el-input-number v-model="value" disabled>
  71. </el-input-number>
  72. `,
  73. data() {
  74. return {
  75. value: 2
  76. };
  77. }
  78. }, true);
  79. let input = vm.$el.querySelector('input');
  80. let btnDecrease = vm.$el.querySelector('.el-input-number__decrease');
  81. let btnIncrease = vm.$el.querySelector('.el-input-number__increase');
  82. triggerEvent(btnDecrease, 'mousedown');
  83. triggerEvent(document, 'mouseup');
  84. vm.$nextTick(_ => {
  85. expect(vm.value).to.be.equal(2);
  86. expect(input.value).to.be.equal('2');
  87. triggerEvent(btnIncrease, 'mousedown');
  88. triggerEvent(document, 'mouseup');
  89. vm.$nextTick(_ => {
  90. expect(vm.value).to.be.equal(2);
  91. expect(input.value).to.be.equal('2');
  92. done();
  93. });
  94. });
  95. });
  96. it('step', done => {
  97. vm = createVue({
  98. template: `
  99. <el-input-number v-model="value" :step="3.2">
  100. </el-input-number>
  101. `,
  102. data() {
  103. return {
  104. value: 5
  105. };
  106. }
  107. }, true);
  108. let input = vm.$el.querySelector('input');
  109. let btnIncrease = vm.$el.querySelector('.el-input-number__increase');
  110. let btnDecrease = vm.$el.querySelector('.el-input-number__decrease');
  111. triggerEvent(btnIncrease, 'mousedown');
  112. triggerEvent(document, 'mouseup');
  113. vm.$nextTick(_ => {
  114. expect(vm.value).to.be.equal(8.2);
  115. expect(input.value).to.be.equal('8.2');
  116. triggerEvent(btnDecrease, 'mousedown');
  117. triggerEvent(document, 'mouseup');
  118. vm.$nextTick(_ => {
  119. expect(vm.value).to.be.equal(5);
  120. expect(input.value).to.be.equal('5');
  121. done();
  122. });
  123. });
  124. });
  125. it('min', done => {
  126. vm = createVue({
  127. template: `
  128. <el-input-number v-model="value" :min="6">
  129. </el-input-number>
  130. `,
  131. data() {
  132. return {
  133. value: 6
  134. };
  135. }
  136. }, true);
  137. const vm2 = createVue({
  138. template: `
  139. <el-input-number v-model="value" :min="6">
  140. </el-input-number>
  141. `,
  142. data() {
  143. return {
  144. value: 3
  145. };
  146. }
  147. }, true);
  148. expect(vm2.value === 6);
  149. expect(vm2.$el.querySelector('input').value).to.be.equal('6');
  150. let input = vm.$el.querySelector('input');
  151. let btnDecrease = vm.$el.querySelector('.el-input-number__decrease');
  152. triggerEvent(btnDecrease, 'mousedown');
  153. triggerEvent(document, 'mouseup');
  154. vm.$nextTick(_ => {
  155. expect(vm.value).to.be.equal(6);
  156. expect(input.value).to.be.equal('6');
  157. done();
  158. });
  159. });
  160. it('max', done => {
  161. vm = createVue({
  162. template: `
  163. <el-input-number v-model="value" :max="8">
  164. </el-input-number>
  165. `,
  166. data() {
  167. return {
  168. value: 8
  169. };
  170. }
  171. }, true);
  172. const vm2 = createVue({
  173. template: `
  174. <el-input-number v-model="value" :max="8">
  175. </el-input-number>
  176. `,
  177. data() {
  178. return {
  179. value: 100
  180. };
  181. }
  182. }, true);
  183. expect(vm2.value === 8);
  184. expect(vm2.$el.querySelector('input').value).to.be.equal('8');
  185. let input = vm.$el.querySelector('input');
  186. let btnIncrease = vm.$el.querySelector('.el-input-number__increase');
  187. triggerEvent(btnIncrease, 'mousedown');
  188. triggerEvent(document, 'mouseup');
  189. vm.$nextTick(_ => {
  190. expect(vm.value).to.be.equal(8);
  191. expect(input.value).to.be.equal('8');
  192. done();
  193. });
  194. });
  195. it('controls', () => {
  196. vm = createVue({
  197. template: `
  198. <el-input-number :controls="false" v-model="value" :max="8">
  199. </el-input-number>
  200. `,
  201. data() {
  202. return {
  203. value: 8
  204. };
  205. }
  206. }, true);
  207. expect(vm.$el.querySelector('.el-input-number__decrease')).to.not.exist;
  208. expect(vm.$el.querySelector('.el-input-number__increase')).to.not.exist;
  209. });
  210. it('invalid value reset', done => {
  211. vm = createVue({
  212. template: `
  213. <el-input-number v-model="value" :min="5" :max="10" ref="inputNumber">
  214. </el-input-number>
  215. `,
  216. data() {
  217. return {
  218. value: 5
  219. };
  220. }
  221. }, true);
  222. const inputNumber = vm.$refs.inputNumber;
  223. vm.value = 100;
  224. vm.$nextTick(_ => {
  225. expect(inputNumber.currentValue).to.be.equal(10);
  226. vm.value = 4;
  227. vm.$nextTick(_ => {
  228. expect(inputNumber.currentValue).to.be.equal(5);
  229. vm.value = 'dsajkhd';
  230. vm.$nextTick(_ => {
  231. expect(inputNumber.currentValue).to.be.equal(5);
  232. done();
  233. });
  234. });
  235. });
  236. });
  237. it('event:change', done => {
  238. vm = createVue({
  239. template: `
  240. <el-input-number v-model="value" ref="input">
  241. </el-input-number>
  242. `,
  243. data() {
  244. return {
  245. value: 1.5
  246. };
  247. }
  248. }, true);
  249. let btnIncrease = vm.$el.querySelector('.el-input-number__increase');
  250. const spy = sinon.spy();
  251. vm.$refs.input.$on('change', spy);
  252. triggerEvent(btnIncrease, 'mousedown');
  253. triggerEvent(document, 'mouseup');
  254. vm.$nextTick(_ => {
  255. expect(spy.withArgs(2.5, 1.5).calledOnce).to.be.true;
  256. done();
  257. });
  258. });
  259. });