|
|
@@ -3,6 +3,7 @@ import {
|
|
|
computed,
|
|
|
createApp,
|
|
|
h,
|
|
|
+ inject,
|
|
|
nextTick,
|
|
|
onActivated,
|
|
|
onDeactivated,
|
|
|
@@ -17,6 +18,7 @@ import {
|
|
|
createComponent,
|
|
|
createSlot,
|
|
|
createTemplateRefSetter,
|
|
|
+ createVaporApp,
|
|
|
defineVaporAsyncComponent,
|
|
|
defineVaporComponent,
|
|
|
delegateEvents,
|
|
|
@@ -178,6 +180,39 @@ describe('hot module replacement', () => {
|
|
|
expect(mountSpy).toHaveBeenCalledTimes(1)
|
|
|
})
|
|
|
|
|
|
+ test('reload root vapor component should preserve appContext provide/inject', async () => {
|
|
|
+ const root = document.createElement('div')
|
|
|
+ const appId = 'test-root-reload-app-context'
|
|
|
+
|
|
|
+ const Child = defineVaporComponent({
|
|
|
+ setup() {
|
|
|
+ const msg = inject('msg')
|
|
|
+ return { msg }
|
|
|
+ },
|
|
|
+ render: compileToFunction(`<div>{{ msg }}</div>`),
|
|
|
+ })
|
|
|
+
|
|
|
+ const App = defineVaporComponent({
|
|
|
+ __hmrId: appId,
|
|
|
+ render: () => createComponent(Child),
|
|
|
+ })
|
|
|
+ createRecord(appId, App as any)
|
|
|
+
|
|
|
+ const app = createVaporApp(App)
|
|
|
+ app.provide('msg', 'app-injected')
|
|
|
+ app.mount(root)
|
|
|
+ expect(root.innerHTML).toBe(`<div>app-injected</div>`)
|
|
|
+
|
|
|
+ reload(appId, {
|
|
|
+ __vapor: true,
|
|
|
+ __hmrId: appId,
|
|
|
+ render: () => createComponent(Child),
|
|
|
+ })
|
|
|
+
|
|
|
+ await nextTick()
|
|
|
+ expect(root.innerHTML).toBe(`<div>app-injected</div>`)
|
|
|
+ })
|
|
|
+
|
|
|
test('reload KeepAlive slot', async () => {
|
|
|
const root = document.createElement('div')
|
|
|
document.body.appendChild(root)
|