33 computed ,
44 createApp ,
55 h ,
6+ inject ,
67 nextTick ,
78 onActivated ,
89 onDeactivated ,
@@ -17,6 +18,7 @@ import {
1718 createComponent ,
1819 createSlot ,
1920 createTemplateRefSetter ,
21+ createVaporApp ,
2022 defineVaporAsyncComponent ,
2123 defineVaporComponent ,
2224 delegateEvents ,
@@ -178,6 +180,39 @@ describe('hot module replacement', () => {
178180 expect ( mountSpy ) . toHaveBeenCalledTimes ( 1 )
179181 } )
180182
183+ test ( 'reload root vapor component should preserve appContext provide/inject' , async ( ) => {
184+ const root = document . createElement ( 'div' )
185+ const appId = 'test-root-reload-app-context'
186+
187+ const Child = defineVaporComponent ( {
188+ setup ( ) {
189+ const msg = inject ( 'msg' )
190+ return { msg }
191+ } ,
192+ render : compileToFunction ( `<div>{{ msg }}</div>` ) ,
193+ } )
194+
195+ const App = defineVaporComponent ( {
196+ __hmrId : appId ,
197+ render : ( ) => createComponent ( Child ) ,
198+ } )
199+ createRecord ( appId , App as any )
200+
201+ const app = createVaporApp ( App )
202+ app . provide ( 'msg' , 'app-injected' )
203+ app . mount ( root )
204+ expect ( root . innerHTML ) . toBe ( `<div>app-injected</div>` )
205+
206+ reload ( appId , {
207+ __vapor : true ,
208+ __hmrId : appId ,
209+ render : ( ) => createComponent ( Child ) ,
210+ } )
211+
212+ await nextTick ( )
213+ expect ( root . innerHTML ) . toBe ( `<div>app-injected</div>` )
214+ } )
215+
181216 test ( 'reload KeepAlive slot' , async ( ) => {
182217 const root = document . createElement ( 'div' )
183218 document . body . appendChild ( root )
0 commit comments