Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: remove sync mode #1141

Merged
merged 4 commits into from Feb 9, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -36,7 +36,7 @@
"babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-plugin-transform-vue-jsx": "^3.7.0",
"babel-polyfill": "^6.23.0",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.6.0",
"babel-preset-flow-vue": "^1.0.0",
"babel-preset-stage-2": "^6.24.1",
Expand Down
1 change: 0 additions & 1 deletion packages/create-instance/extract-instance-options.js
Expand Up @@ -11,7 +11,6 @@ const MOUNTING_OPTIONS = [
'attrs',
'listeners',
'propsData',
'sync',
'shouldProxy'
]

Expand Down
1 change: 0 additions & 1 deletion packages/server-test-utils/types/index.d.ts
Expand Up @@ -36,7 +36,6 @@ interface MountOptions<V extends Vue> extends ComponentOptions<V> {
stubs?: Stubs,
attrs?: Record<string, string>
listeners?: Record<string, Function | Function[]>
sync?: boolean
}

type ThisTypedMountOptions<V extends Vue> = MountOptions<V> & ThisType<V>
Expand Down
3 changes: 1 addition & 2 deletions packages/server-test-utils/types/test/renderToString.ts
Expand Up @@ -12,8 +12,7 @@ render(
attachToDocument: true,
scopedSlots: {
foo: `<div>Foo</div>`
},
sync: false
}
}
)

Expand Down
1 change: 0 additions & 1 deletion packages/shared/consts.js
Expand Up @@ -6,7 +6,6 @@ export const COMPONENT_SELECTOR = 'COMPONENT_SELECTOR'
export const REF_SELECTOR = 'REF_SELECTOR'
export const DOM_SELECTOR = 'DOM_SELECTOR'
export const INVALID_SELECTOR = 'INVALID_SELECTOR'
export const COMPAT_SYNC_MODE = 'COMPAT_SYNC_MODE'

export const VUE_VERSION = Number(
`${Vue.version.split('.')[0]}.${Vue.version.split('.')[1]}`
Expand Down
3 changes: 1 addition & 2 deletions packages/shared/merge-options.js
Expand Up @@ -41,7 +41,6 @@ export function mergeOptions(
provide: normalizeProvide(provide),
stubs,
mocks,
methods,
sync: !!(options.sync || options.sync === undefined)
methods
}
}
10 changes: 0 additions & 10 deletions packages/test-utils/src/components/TransitionGroupStub.js

This file was deleted.

147 changes: 0 additions & 147 deletions packages/test-utils/src/components/TransitionStub.js

This file was deleted.

7 changes: 0 additions & 7 deletions packages/test-utils/src/error-wrapper.js
Expand Up @@ -249,13 +249,6 @@ export default class ErrorWrapper implements BaseWrapper {
)
}

update(): void {
throwError(
`update has been removed from vue-test-utils.` +
`All updates are now synchronous by default`
)
}

destroy(): void {
throwError(
`find did not return ${
Expand Down
4 changes: 0 additions & 4 deletions packages/test-utils/src/index.js
@@ -1,8 +1,6 @@
import shallowMount from './shallow-mount'
import mount from './mount'
import createLocalVue from './create-local-vue'
import TransitionStub from './components/TransitionStub'
import TransitionGroupStub from './components/TransitionGroupStub'
import RouterLinkStub from './components/RouterLinkStub'
import createWrapper from './create-wrapper'
import Wrapper from './wrapper'
Expand All @@ -25,8 +23,6 @@ export default {
mount,
shallow,
shallowMount,
TransitionStub,
TransitionGroupStub,
RouterLinkStub,
Wrapper,
WrapperArray
Expand Down
63 changes: 1 addition & 62 deletions packages/test-utils/src/mount.js
Expand Up @@ -7,63 +7,11 @@ import config from './config'
import warnIfNoWindow from './warn-if-no-window'
import createWrapper from './create-wrapper'
import createLocalVue from './create-local-vue'
import { warn } from 'shared/util'
import semver from 'semver'
import { COMPAT_SYNC_MODE } from 'shared/consts'
import { validateOptions } from 'shared/validate-options'
import TransitionGroupStub from './components/TransitionGroupStub'
import TransitionStub from './components/TransitionStub'

Vue.config.productionTip = false
Vue.config.devtools = false

function getSyncOption(syncOption) {
if (syncOption === false) {
Vue.config.async = true
return false
}
if (semver.lt(Vue.version, '2.5.18')) {
warn(
`Vue Test Utils runs in sync mode by default. Due to bugs, sync mode ` +
`requires Vue > 2.5.18. In Vue Test Utils 1.0 sync mode will only be ` +
`supported with Vue 2.5.18+ running in development mode. If you are ` +
`unable to upgrade, you should rewrite your tests to run asynchronously` +
`you can do this by setting the sync mounting option to false.`
)
return COMPAT_SYNC_MODE
}

if (typeof Vue.config.async === 'undefined') {
warn(
`Sync mode only works when Vue runs in dev mode. ` +
`Please set Vue to run in dev mode, or set sync to false`
)
}

Vue.config.async = false
return true
}

function addTransitionStubs(options) {
if (config.stubs === false) {
return
}
if (
options.stubs &&
options.stubs.transition !== false &&
!options.stubs.transition
) {
options.stubs.transition = TransitionStub
}
if (
options.stubs &&
options.stubs['transition-group'] !== false &&
!options.stubs['transition-group']
) {
options.stubs['transition-group'] = TransitionGroupStub
}
}

export default function mount(component, options = {}) {
warnIfNoWindow()

Expand All @@ -72,17 +20,9 @@ export default function mount(component, options = {}) {
const _Vue = createLocalVue(options.localVue)

const mergedOptions = mergeOptions(options, config)
const sync = getSyncOption(mergedOptions.sync)

validateOptions(mergedOptions, component)

// Stub transition and transition-group if in compat sync mode to keep old
// behavior
// TODO: Remove when compat sync mode is removed
if (sync === COMPAT_SYNC_MODE) {
addTransitionStubs(mergedOptions)
}

const parentVm = createInstance(component, mergedOptions, _Vue)

const el = options.attachToDocument ? createElement() : undefined
Expand All @@ -93,8 +33,7 @@ export default function mount(component, options = {}) {
throwIfInstancesThrew(vm)

const wrapperOptions = {
attachedToDocument: !!mergedOptions.attachToDocument,
sync
attachedToDocument: !!mergedOptions.attachToDocument
}

const root = parentVm.$options._isFunctionalContainer
Expand Down
35 changes: 0 additions & 35 deletions packages/test-utils/src/order-watchers.js

This file was deleted.