From 3d38e55bf380a51cadfdd676dd139a3f15cd414c Mon Sep 17 00:00:00 2001 From: ankurk91 Date: Sun, 19 Apr 2020 10:05:56 +0530 Subject: [PATCH] chore: upgrade vue test utils --- .github/CONTRIBUTING.md | 2 +- __test__/events.spec.js | 47 +++++++--------- __test__/watchers.spec.js | 20 +++++-- examples/App.vue | 2 +- package.json | 2 +- webpack.config.dev.js | 1 - yarn.lock | 115 +++++++++++++++++++++++++++++++++++--- 7 files changed, 145 insertions(+), 44 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 38ae64f..f3a7cfa 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,7 +1,7 @@ # Contributing ### Issue reporting -* If the issue is related to flatPickr then report that issue on [flatpickr](https://github.com/chmln/flatpickr/issues) repo instead +* If the issue is related to flatPickr then report that issue on [flatpickr](https://github.com/flatpickr/flatpickr/issues) repo instead - Issues those are related to flatPickr may be closed without any reason * Follow ISSUE_TEMPLATE diff --git a/__test__/events.spec.js b/__test__/events.spec.js index 1717611..ec9b63f 100644 --- a/__test__/events.spec.js +++ b/__test__/events.spec.js @@ -30,28 +30,24 @@ describe('Flatpickr events', () => { jest.resetAllMocks(); }); - test('emits input event on value change by user', (done) => { + test('emits input event on value change by user', async () => { const stub = jest.fn(); wrapper.vm.$on('input', stub); wrapper.vm.$el.value = '2019-10-04'; wrapper.find('input').trigger('input'); + await wrapper.vm.$nextTick(); - wrapper.vm.$nextTick(() => { - expect(stub).toHaveBeenCalledWith("2019-10-04"); - done(); - }); + expect(stub).toHaveBeenCalledWith("2019-10-04"); }); - test('emits on-change event on value change', (done) => { + test('emits on-change event on value change', async () => { const stub = jest.fn(); wrapper.vm.$on('on-change', stub); wrapper.setProps({value: '2017-10-04'}); - wrapper.vm.$nextTick(() => { - expect(stub).toHaveBeenCalled(); - done(); - }); + await wrapper.vm.$nextTick(); + expect(stub).toHaveBeenCalled(); }); test('emits on-open event on focus', () => { @@ -62,17 +58,15 @@ describe('Flatpickr events', () => { expect(stub).toHaveBeenCalled(); }); - test('calls original onChange method on value change', (done) => { + test('calls original onChange method on value change', async () => { wrapper.setProps({value: '2017-10-04'}); - wrapper.vm.$nextTick(() => { - expect(onChangeStub).toHaveBeenCalled(); - done() - }); + await wrapper.vm.$nextTick(); + expect(onChangeStub).toHaveBeenCalled(); }); - test('emits only those are specified via prop', () => { + test('emits only those are specified via prop', async () => { wrapper = mount(Component, { propsData: { value: null, @@ -83,17 +77,16 @@ describe('Flatpickr events', () => { const onOpen = jest.fn(); wrapper.vm.$on('on-open', onOpen); wrapper.trigger('focus'); - wrapper.vm.$nextTick(() => { - expect(onOpen).not.toHaveBeenCalled(); - }); + await wrapper.vm.$nextTick(); + expect(onOpen).not.toHaveBeenCalled(); const onChange = jest.fn(); wrapper.vm.$on('on-change', onChange); wrapper.setProps({value: '2017-10-04'}); - wrapper.vm.$nextTick(() => { - expect(onChange).toHaveBeenCalled(); - }) + await wrapper.vm.$nextTick(); + + expect(onChange).toHaveBeenCalled(); }); test('does not emit on-change event on mount', () => { @@ -107,15 +100,13 @@ describe('Flatpickr events', () => { expect(wrapper.emitted().blur).toBeTruthy() }); - test('respect global callbacks', (done) => { + test('respect global callbacks', async () => { wrapper.setProps({value: '2017-10-04'}); - wrapper.vm.$nextTick(() => { - expect(globalOnChange).toHaveBeenCalled(); - expect(onChangeStub).toHaveBeenCalled(); + await wrapper.vm.$nextTick(); - done() - }); + expect(globalOnChange).toHaveBeenCalled(); + expect(onChangeStub).toHaveBeenCalled(); }); }); diff --git a/__test__/watchers.spec.js b/__test__/watchers.spec.js index b35c1c4..a46cbb9 100644 --- a/__test__/watchers.spec.js +++ b/__test__/watchers.spec.js @@ -24,31 +24,43 @@ describe('Flatpickr watchers', () => { wrapper = null; }); - test('updates input value in DOM on value changed from parent component', () => { + test('updates input value in DOM on value changed from parent component', async () => { wrapper.setProps({value: '2019-10-04'}); + await wrapper.vm.$nextTick(); + expect(wrapper.vm.$el.value).toEqual('2019-10-04'); }); - test('updates configs runtime', () => { + test('updates configs runtime',async () => { wrapper.setProps({config: {time_24hr: true}}); + await wrapper.vm.$nextTick(); + expect(wrapper.vm.fp.config).toHaveProperty('time_24hr', true); wrapper.setProps({config: {time_24hr: false}}); + await wrapper.vm.$nextTick(); + expect(wrapper.vm.fp.config).toHaveProperty('time_24hr', false); }); - test('updates locale runtime', () => { + test('updates locale runtime', async () => { expect(wrapper.vm.fp.config.locale.months.longhand[0]).not.toBe('January'); wrapper.setProps({config: {locale: EnglishLocale}}); + await wrapper.vm.$nextTick(); + expect(wrapper.vm.fp.config.locale.months.longhand[0]).toBe('January'); }); - test('updates disabled attribute runtime', () => { + test('updates disabled attribute runtime',async () => { wrapper.setProps({disabled: false}); + await wrapper.vm.$nextTick(); + expect(wrapper.vm.fpInput().disabled).toBeFalsy(); wrapper.setProps({disabled: true}); + await wrapper.vm.$nextTick(); + expect(wrapper.vm.fpInput().disabled).toBeTruthy(); }); diff --git a/examples/App.vue b/examples/App.vue index 1e7f1af..b791d3f 100644 --- a/examples/App.vue +++ b/examples/App.vue @@ -162,7 +162,7 @@ diff --git a/package.json b/package.json index 0b982a8..452a2bc 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@babel/core": "^7.9.0", "@babel/plugin-transform-object-assign": "^7.8.3", "@babel/preset-env": "^7.9.5", - "@vue/test-utils": "1.0.0-beta.29", + "@vue/test-utils": "1.0.0-beta.33", "babel-jest": "^25.3.0", "babel-loader": "^8.1.0", "bootstrap": "^4.4.1", diff --git a/webpack.config.dev.js b/webpack.config.dev.js index 4e27647..9f59a8d 100644 --- a/webpack.config.dev.js +++ b/webpack.config.dev.js @@ -103,7 +103,6 @@ module.exports = { }), new webpack.ProvidePlugin({ Vue: ['vue/dist/vue.esm.js', 'default'], - 'window.Vue': 'vue', }), new VueLoaderPlugin(), ], diff --git a/yarn.lock b/yarn.lock index 07a8f56..3a25f8a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1130,13 +1130,14 @@ optionalDependencies: prettier "^1.18.2" -"@vue/test-utils@1.0.0-beta.29": - version "1.0.0-beta.29" - resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.29.tgz#c942cf25e891cf081b6a03332b4ae1ef430726f0" - integrity sha512-yX4sxEIHh4M9yAbLA/ikpEnGKMNBCnoX98xE1RwxfhQVcn0MaXNSj1Qmac+ZydTj6VBSEVukchBogXBTwc+9iA== +"@vue/test-utils@1.0.0-beta.33": + version "1.0.0-beta.33" + resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.33.tgz#627511afbd4307e7557634f860a1b985bd25d9cd" + integrity sha512-Xzqoe0lTLn3QRWfjhmKPOXYR86l0Y+g/zPHaheJQOkPLj5ojJl3rG0t4F3kXFWuLD88YzUVRMIBWOG7v9KOJQQ== dependencies: dom-event-types "^1.0.0" - lodash "^4.17.4" + lodash "^4.17.15" + pretty "^2.0.0" "@webassemblyjs/ast@1.9.0": version "1.9.0" @@ -1298,6 +1299,11 @@ abab@^2.0.0: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -2126,7 +2132,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.20.0: +commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -2181,6 +2187,23 @@ concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" +condense-newlines@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" + integrity sha1-PemFVTE5R10yUCyDsC9gaE0kxV8= + dependencies: + extend-shallow "^2.0.1" + is-whitespace "^0.3.0" + kind-of "^3.0.2" + +config-chain@^1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" @@ -2685,6 +2708,16 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +editorconfig@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" + integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== + dependencies: + commander "^2.19.0" + lru-cache "^4.1.5" + semver "^5.6.0" + sigmund "^1.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -3972,6 +4005,11 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-whitespace@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" + integrity sha1-Fjnssb4DauxppUy7QBz77XEUq38= + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -4410,6 +4448,17 @@ jest@^25.3.0: import-local "^3.0.2" jest-cli "^25.3.0" +js-beautify@^1.6.12: + version "1.11.0" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.11.0.tgz#afb873dc47d58986360093dcb69951e8bcd5ded2" + integrity sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A== + dependencies: + config-chain "^1.1.12" + editorconfig "^0.15.3" + glob "^7.1.3" + mkdirp "~1.0.3" + nopt "^4.0.3" + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4640,7 +4689,7 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: +lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -4671,7 +4720,7 @@ lower-case@^2.0.1: dependencies: tslib "^1.10.0" -lru-cache@^4.1.2: +lru-cache@^4.1.2, lru-cache@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -4913,6 +4962,11 @@ mkdirp@^0.5.1, mkdirp@^0.5.3: dependencies: minimist "^1.2.5" +mkdirp@~1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5063,6 +5117,14 @@ node-releases@^1.1.53: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== +nopt@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -5244,6 +5306,11 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + os-locale@^3.0.0, os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -5253,6 +5320,19 @@ os-locale@^3.0.0, os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -5626,6 +5706,15 @@ pretty-format@^25.3.0: ansi-styles "^4.0.0" react-is "^16.12.0" +pretty@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5" + integrity sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU= + dependencies: + condense-newlines "^0.2.1" + extend-shallow "^2.0.1" + js-beautify "^1.6.12" + private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -5654,6 +5743,11 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.4" +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" @@ -6286,6 +6380,11 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"