import Vue from '@vue/compat'
import { effect, isReactive } from '@vue/reactivity'
-import { nextTick } from '@vue/runtime-core'
+import { h, nextTick } from '@vue/runtime-core'
import {
DeprecationTypes,
deprecationData,
template: '<foo/>'
})
Vue.component('foo', { template: 'foo' })
- const vm = app.mount(document.createElement('div')) as any;
+ const vm = app.mount(document.createElement('div')) as any
expect(vm.$el.textContent).toBe('foo')
delete singletonApp._context.components.foo
})
test('local asset registration should not affect other local apps', () => {
- const app1 = createApp({});
- const app2 = createApp({});
+ const app1 = createApp({})
+ const app2 = createApp({})
- app1.component('foo', {});
- app2.component('foo', {});
+ app1.component('foo', {})
+ app2.component('foo', {})
expect(
`Component "foo" has already been registered in target app`
).not.toHaveBeenWarned()
-})
\ No newline at end of file
+})
+
+test('local app-level mixin registration should not affect other local apps', () => {
+ const app1 = createApp({ render: () => h('div') })
+ const app2 = createApp({})
+
+ const mixin = { created: jest.fn() }
+ app1.mixin(mixin)
+ app2.mixin(mixin)
+
+ expect(`Mixin has already been applied`).not.toHaveBeenWarned()
+
+ app1.mount(document.createElement('div'))
+ expect(mixin.created).toHaveBeenCalledTimes(1)
+})
+
+// #5699
+test('local app config should not affect other local apps in v3 mode', () => {
+ Vue.configureCompat({ MODE: 3 })
+ const app1 = createApp({
+ render: () => h('div'),
+ provide() {
+ return {
+ test: 123
+ }
+ }
+ })
+ app1.config.globalProperties.test = () => {}
+ app1.mount(document.createElement('div'))
+
+ const app2 = createApp({})
+ expect(app2.config.globalProperties.test).toBe(undefined)
+})