| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import Vue from 'vue'
- Vue.config.preserveWhitespace = false
- if (typeof console === 'undefined') {
- window.console = {
- error: function () {}
- }
- }
- function hasWarned (msg) {
- var count = console.error.calls.count()
- var args
- while (count--) {
- args = console.error.calls.argsFor(count)
- if (args.some(containsMsg)) {
- return true
- }
- }
- function containsMsg (arg) {
- if (arg instanceof Error) throw arg
- return typeof arg === 'string' && arg.indexOf(msg) > -1
- }
- }
- // define custom matcher for warnings
- beforeEach(function () {
- spyOn(console, 'error')
- jasmine.addMatchers({
- toHaveBeenWarned: function () {
- return {
- compare: function (msg) {
- var warned = Array.isArray(msg)
- ? msg.some(hasWarned)
- : hasWarned(msg)
- return {
- pass: warned,
- message: warned
- ? 'Expected message "' + msg + '" not to have been warned'
- : 'Expected message "' + msg + '" to have been warned'
- }
- }
- }
- }
- })
- })
- // helper for async assertions.
- // Use like this:
- //
- // vm.a = 123
- // waitForUpdate(() => {
- // expect(vm.$el.textContent).toBe('123')
- // vm.a = 234
- // })
- // .then(() => {
- // // more assertions...
- // done()
- // })
- // .catch(done)
- window.waitForUpdate = initialCb => {
- let onError
- const queue = [initialCb]
- function shift () {
- const job = queue.shift()
- let hasError = false
- try {
- job()
- } catch (e) {
- hasError = true
- if (onError) {
- onError(e)
- }
- }
- if (!hasError) {
- if (queue.length) {
- Vue.nextTick(shift)
- }
- }
- }
- Vue.nextTick(shift)
- const chainer = {
- then: nextCb => {
- queue.push(nextCb)
- return chainer
- },
- catch: errorCb => {
- onError = errorCb
- return chainer
- }
- }
- return chainer
- }
- // require all test files
- const testsContext = require.context('./', true, /\.spec$/)
- testsContext.keys().forEach(testsContext)
|