|
|
@@ -937,4 +937,55 @@ describe('hot module replacement', () => {
|
|
|
rerender(id, () => 'bar')
|
|
|
expect(serializeInner(root)).toBe('bar')
|
|
|
})
|
|
|
+
|
|
|
+ // https://github.com/vitejs/vite-plugin-vue/issues/599
|
|
|
+ // Both Outer and Inner are reloaded when './server.js' changes
|
|
|
+ test('reload nested components from single update', async () => {
|
|
|
+ const innerId = 'nested-reload-inner'
|
|
|
+ const outerId = 'nested-reload-outer'
|
|
|
+
|
|
|
+ let Inner = {
|
|
|
+ __hmrId: innerId,
|
|
|
+ render() {
|
|
|
+ return h('div', 'foo')
|
|
|
+ },
|
|
|
+ }
|
|
|
+ let Outer = {
|
|
|
+ __hmrId: outerId,
|
|
|
+ render() {
|
|
|
+ return h(Inner)
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ createRecord(innerId, Inner)
|
|
|
+ createRecord(outerId, Outer)
|
|
|
+
|
|
|
+ const App = {
|
|
|
+ render: () => h(Outer),
|
|
|
+ }
|
|
|
+
|
|
|
+ const root = nodeOps.createElement('div')
|
|
|
+ render(h(App), root)
|
|
|
+ expect(serializeInner(root)).toBe('<div>foo</div>')
|
|
|
+
|
|
|
+ Inner = {
|
|
|
+ __hmrId: innerId,
|
|
|
+ render() {
|
|
|
+ return h('div', 'bar')
|
|
|
+ },
|
|
|
+ }
|
|
|
+ Outer = {
|
|
|
+ __hmrId: outerId,
|
|
|
+ render() {
|
|
|
+ return h(Inner)
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // trigger reload for both Outer and Inner
|
|
|
+ reload(outerId, Outer)
|
|
|
+ reload(innerId, Inner)
|
|
|
+ await nextTick()
|
|
|
+
|
|
|
+ expect(serializeInner(root)).toBe('<div>bar</div>')
|
|
|
+ })
|
|
|
})
|