fix(runtime-core): fix resolving assets from mixins and extends

fix #1963
This commit is contained in:
Evan You
2020-08-26 18:09:54 -04:00
parent bc64c60c7e
commit 0cb7f7f880
4 changed files with 107 additions and 3 deletions

View File

@@ -151,4 +151,62 @@ describe('resolveAssets', () => {
expect(serializeInner(root)).toBe('<div>hello</div>')
})
})
test('resolving from mixins & extends', () => {
const FooBar = () => null
const BarBaz = { mounted: () => null }
let component1: Component | string
let component2: Component | string
let component3: Component | string
let component4: Component | string
let directive1: Directive
let directive2: Directive
let directive3: Directive
let directive4: Directive
const Base = {
components: {
FooBar: FooBar
}
}
const Mixin = {
directives: {
BarBaz: BarBaz
}
}
const Root = {
extends: Base,
mixins: [Mixin],
setup() {
return () => {
component1 = resolveComponent('FooBar')!
directive1 = resolveDirective('BarBaz')!
// camelize
component2 = resolveComponent('Foo-bar')!
directive2 = resolveDirective('Bar-baz')!
// capitalize
component3 = resolveComponent('fooBar')!
directive3 = resolveDirective('barBaz')!
// camelize and capitalize
component4 = resolveComponent('foo-bar')!
directive4 = resolveDirective('bar-baz')!
}
}
}
const app = createApp(Root)
const root = nodeOps.createElement('div')
app.mount(root)
expect(component1!).toBe(FooBar)
expect(component2!).toBe(FooBar)
expect(component3!).toBe(FooBar)
expect(component4!).toBe(FooBar)
expect(directive1!).toBe(BarBaz)
expect(directive2!).toBe(BarBaz)
expect(directive3!).toBe(BarBaz)
expect(directive4!).toBe(BarBaz)
})
})