fix(runtime-core): fix resolving assets from mixins and extends
fix #1963
This commit is contained in:
@@ -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)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user