|
|
@@ -36,9 +36,9 @@ describe('hot module replacement', () => {
|
|
|
})
|
|
|
|
|
|
test('createRecord', () => {
|
|
|
- expect(createRecord('test1')).toBe(true)
|
|
|
+ expect(createRecord('test1', {})).toBe(true)
|
|
|
// if id has already been created, should return false
|
|
|
- expect(createRecord('test1')).toBe(false)
|
|
|
+ expect(createRecord('test1', {})).toBe(false)
|
|
|
})
|
|
|
|
|
|
test('rerender', async () => {
|
|
|
@@ -50,7 +50,7 @@ describe('hot module replacement', () => {
|
|
|
__hmrId: childId,
|
|
|
render: compileToFunction(`<div><slot/></div>`)
|
|
|
}
|
|
|
- createRecord(childId)
|
|
|
+ createRecord(childId, Child)
|
|
|
|
|
|
const Parent: ComponentOptions = {
|
|
|
__hmrId: parentId,
|
|
|
@@ -62,7 +62,7 @@ describe('hot module replacement', () => {
|
|
|
`<div @click="count++">{{ count }}<Child>{{ count }}</Child></div>`
|
|
|
)
|
|
|
}
|
|
|
- createRecord(parentId)
|
|
|
+ createRecord(parentId, Parent)
|
|
|
|
|
|
render(h(Parent), root)
|
|
|
expect(serializeInner(root)).toBe(`<div>0<div>0</div></div>`)
|
|
|
@@ -128,7 +128,7 @@ describe('hot module replacement', () => {
|
|
|
unmounted: unmountSpy,
|
|
|
render: compileToFunction(`<div @click="count++">{{ count }}</div>`)
|
|
|
}
|
|
|
- createRecord(childId)
|
|
|
+ createRecord(childId, Child)
|
|
|
|
|
|
const Parent: ComponentOptions = {
|
|
|
render: () => h(Child)
|
|
|
@@ -167,7 +167,7 @@ describe('hot module replacement', () => {
|
|
|
render: compileToFunction(`<div @click="count++">{{ count }}</div>`)
|
|
|
}
|
|
|
}
|
|
|
- createRecord(childId)
|
|
|
+ createRecord(childId, Child)
|
|
|
|
|
|
const Parent: ComponentOptions = {
|
|
|
render: () => h(Child)
|
|
|
@@ -212,7 +212,7 @@ describe('hot module replacement', () => {
|
|
|
},
|
|
|
render: compileToFunction(template)
|
|
|
}
|
|
|
- createRecord(id)
|
|
|
+ createRecord(id, Comp)
|
|
|
|
|
|
render(h(Comp), root)
|
|
|
expect(serializeInner(root)).toBe(
|
|
|
@@ -249,14 +249,14 @@ describe('hot module replacement', () => {
|
|
|
},
|
|
|
render: compileToFunction(`<div>{{ msg }}</div>`)
|
|
|
}
|
|
|
- createRecord(childId)
|
|
|
+ createRecord(childId, Child)
|
|
|
|
|
|
const Parent: ComponentOptions = {
|
|
|
__hmrId: parentId,
|
|
|
components: { Child },
|
|
|
render: compileToFunction(`<Child msg="foo" />`)
|
|
|
}
|
|
|
- createRecord(parentId)
|
|
|
+ createRecord(parentId, Parent)
|
|
|
|
|
|
render(h(Parent), root)
|
|
|
expect(serializeInner(root)).toBe(`<div>foo</div>`)
|
|
|
@@ -275,14 +275,14 @@ describe('hot module replacement', () => {
|
|
|
__hmrId: childId,
|
|
|
render: compileToFunction(`<div>child</div>`)
|
|
|
}
|
|
|
- createRecord(childId)
|
|
|
+ createRecord(childId, Child)
|
|
|
|
|
|
const Parent: ComponentOptions = {
|
|
|
__hmrId: parentId,
|
|
|
components: { Child },
|
|
|
render: compileToFunction(`<Child class="test" />`)
|
|
|
}
|
|
|
- createRecord(parentId)
|
|
|
+ createRecord(parentId, Parent)
|
|
|
|
|
|
render(h(Parent), root)
|
|
|
expect(serializeInner(root)).toBe(`<div class="test">child</div>`)
|
|
|
@@ -302,7 +302,7 @@ describe('hot module replacement', () => {
|
|
|
__hmrId: childId,
|
|
|
render: compileToFunction(`<div>child</div>`)
|
|
|
}
|
|
|
- createRecord(childId)
|
|
|
+ createRecord(childId, Child)
|
|
|
|
|
|
const components: ComponentOptions[] = []
|
|
|
|
|
|
@@ -324,7 +324,7 @@ describe('hot module replacement', () => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- createRecord(parentId)
|
|
|
+ createRecord(parentId, parentComp)
|
|
|
}
|
|
|
|
|
|
const last = components[components.length - 1]
|
|
|
@@ -370,7 +370,7 @@ describe('hot module replacement', () => {
|
|
|
</Child>
|
|
|
`)
|
|
|
}
|
|
|
- createRecord(parentId)
|
|
|
+ createRecord(parentId, Parent)
|
|
|
|
|
|
render(h(Parent), root)
|
|
|
expect(serializeInner(root)).toBe(
|
|
|
@@ -410,7 +410,7 @@ describe('hot module replacement', () => {
|
|
|
return h('div')
|
|
|
}
|
|
|
}
|
|
|
- createRecord(childId)
|
|
|
+ createRecord(childId, Child)
|
|
|
|
|
|
const Parent: ComponentOptions = {
|
|
|
render: () => h(Child)
|
|
|
@@ -435,4 +435,38 @@ describe('hot module replacement', () => {
|
|
|
expect(createSpy1).toHaveBeenCalledTimes(1)
|
|
|
expect(createSpy2).toHaveBeenCalledTimes(1)
|
|
|
})
|
|
|
+
|
|
|
+ // #4757
|
|
|
+ test('rerender for component that has no active instance yet', () => {
|
|
|
+ const id = 'no-active-instance-rerender'
|
|
|
+ const Foo: ComponentOptions = {
|
|
|
+ __hmrId: id,
|
|
|
+ render: () => 'foo'
|
|
|
+ }
|
|
|
+
|
|
|
+ createRecord(id, Foo)
|
|
|
+ rerender(id, () => 'bar')
|
|
|
+
|
|
|
+ const root = nodeOps.createElement('div')
|
|
|
+ render(h(Foo), root)
|
|
|
+ expect(serializeInner(root)).toBe('bar')
|
|
|
+ })
|
|
|
+
|
|
|
+ test('reload for component that has no active instance yet', () => {
|
|
|
+ const id = 'no-active-instance-reload'
|
|
|
+ const Foo: ComponentOptions = {
|
|
|
+ __hmrId: id,
|
|
|
+ render: () => 'foo'
|
|
|
+ }
|
|
|
+
|
|
|
+ createRecord(id, Foo)
|
|
|
+ reload(id, {
|
|
|
+ __hmrId: id,
|
|
|
+ render: () => 'bar'
|
|
|
+ })
|
|
|
+
|
|
|
+ const root = nodeOps.createElement('div')
|
|
|
+ render(h(Foo), root)
|
|
|
+ expect(serializeInner(root)).toBe('bar')
|
|
|
+ })
|
|
|
})
|